2016-10-24 6 views
0

私は、chatbotとしてユーザーと通信するためにDiscord APIを使用できるようにpython 3.5の拡張機能を使用しています。オブジェクトが文字列に変換されたときに 'モジュールが呼び出せません'

エクステンションは、チャンネルの一意のIDを保持するChannelオブジェクトを含むいくつかのオブジェクトをPythonに追加します。

このコードスニペットでは、いくつかの状況については

async def on_message(message): 
    if message.author==bot.user or message.channel!=CHANNEL: 
    print("Either not replying to myself, or recieved message from the wrong channel; '"+string(message.channel)+"' when I was expecting '"+(CHANNEL)+"'...") 
    return 

は、 CHANNELbotは、サーバーへの接続で、私はボットはとのインタフェースにしたいターゲットチャネルに設定されている定数であり、 bot.userはのIDが含まれているメンバーオブジェクトですチャットボット

if文はうまく動作しますが、message.channelを文字列に変換すると、次のエラーが表示されます。 TypeError: 'module' object is not callable。どうしてこれなの?

これが意味をなさない場合は、詳細を提供することができます。APIリファレンスもhereです。

EDIT:もう少し詳しく説明します。

答えて

0

import stringのようなコードをコードのどこかに置き、stringを関数のように呼び出すことができないため、この例外が発生するのはstring(message.channel)です。ここで

は一例である:あなたのコードで

>>> import string 
>>> string('hello') 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
TypeError: 'module' object is not callable 

、そのため、あなたのメッセージをフォーマットすることで、シンプルな何かを試してみてください。

msg = "Either not replying to myself, or received message from the wrong channel; '{}' when I was expecting '{}'..." 
print(msg.format(message.channel, CHANNEL)) 
0

私は答えを見つけた、これはのみ使用している人々に適用されますdiscord.py;

チャネル変数を互いに直接比較することはできません。私はmessage.channel.id != CHANNEL.idを使って物事をうまくさせる必要がありました。

関連する問題