-3
import host
Noms = "Name"

def init():
    host.registerHandler('ChatReceivedExtended', onTalk) # extended to distinguish between local chat and whispers

def deinit():
    host.unregisterHandler('ChatReceivedExtended', onTalk)

def onTalk(bnet, user, message, isWhisper, payload):
    if isWhisper and user.getName() == Noms:
        bnet.queueChatCommand("/me " + message)
        bnet.queueChatCommand("/f m " + message)

スクリプトを実行しようとすると、"TypeError: OneTalk() takes exactly 5 arguments (4 given)". しかし、ユーザー名を 11 行目に追加すると、"TypeError: OneTalk() takes exactly 5 arguments (6 given)'.

def onTalk(bnet, user, message, isWhisper, payload):

def onTalk(bnet, user, message, isWhisper, payload, username):
4

2 に答える 2

1

オンライン の例のみに基づいて、4 つの引数を持つメソッドがハンドラーとして期待されているように見えますが、試みたように 5 または 6 ではありません。

試す:

def onTalk(bnet, user, message, isWhisper):
    if isWhisper and user.getName() == Noms:
        bnet.queueChatCommand("/me " + message)
        bnet.queueChatCommand("/f m " + message)

ps 完全なトレースバックを含めて、実行環境にいくつかのコンテキストを提供すれば役に立ちました (例: " pychop用のプラグインを 作成しています ...." )

于 2012-05-24T09:28:23.653 に答える
0

次の提案のように変更するonTalkと、実際にどのように呼び出されるかがわかります。

def onTalk( *args, **kwargs):
    print args
    print kwargs

パラメータの数を調整することができます。

于 2012-05-24T09:33:26.237 に答える