2017-11-18 1 views
0

Ich versuche ein Discord-Bot-Spiel zu machen, bei dem der Spieler "Treffer" sagt und ein Monster zufälligen Schaden nimmt. Nachdem das Monster eine bestimmte Menge Schaden genommen hat, sterben sie und ein neues Monster erscheint. Allerdings, wenn ich „Hit“ in Zwietracht geben, ich einen Fehler sagenDiscord Bot TypeError

TypeError: send_message() takes from 2 to 3 positional arguments but 7 were given 

Dies ist mein Code:

@client.command(pass_context=True) 
async def hit (ctx): 
    global HP 
    damage = random.randrange(50,500) 
    HP -= damage 
    if HP > 0 : 
     await client.say('The monster took', damage, 'damage and has', HP, 'health left') 
    else : 
     await client.say('The monster has died! Another one approaches...') 
     HP = random.randrange(600,1000) 

mir bitte jemand sagen, was falsch ist und wie man es beheben. Vielen Dank!

Antwort

0

Sie nicht erstellen/verketten korrekt die Zeichenfolge, wenn es um client.say()

client.say('The monster took', damage, 'damage and has', HP, 'health left') 

Jedes Mal, wenn Sie hier vorbei ein Komma haben, wird er als neuer Parameter behandelt, um die Funktion zu übergeben.

Sie müssen die Zeichenfolge erstellen und als eine Variable übergeben:

client.say('The monster took ' + damage + ' damage and has ' + HP + ' health left') 

Hinweis Dieses + verwendet anstatt , die Zeichenfolge zu verbinden.