2017-10-06 3 views
0

Hier Eingabe ist mein CodeWie kann man überprüfen, ob Disharmonie bot der Benutzer einen Befehl

import discord 
import asyncio 
import sys 
import commands 
import pickle 
import os 
import random 
import array 
#if len(sys.argv) != 2: 
# print('Usage: python3 main.py [token]') 

commandz=("yes","no","hi","hi") 
try: 
    with open(os.path.join(os.path.dirname(__file__), "token.pickle"), 'rb') as file: 
     token = pickle.load(file) 
    if len(token) == 59: 
     key = int(random.random() * 10000000000000000) 
     print('Found saved token in stored.py, use phrase tokenreset'+str(key), 'to undo this.')#youll need to add the command 
    else: 
     raise 
except: 
    #code tokenreset with admin permissions 
    token = input('What is your Discord bot token? (found on Discord developer page): ') 
    with open(os.path.join(os.path.dirname(__file__), "token.pickle"), 'wb') as file: 
     pickle.dump(token, file) 
client = discord.Client() 

@client.event 
async def on_ready(): 
    print('Logged in as' + '[' + client.user.id + ']' + client.user.name) 
    print('--------') 


@client.event 
async def on_message(message): 
     await handle_command(message) 


async def handle_command(message): 
    print('Noticed: ' + message.content) 
    if message.content == 'tokenreset'+str(key): 
     await client.send_message(message.channel, 'code accepted') 
    i = 0 
    if str(message.author) == "NOTAKOALAINVENEZUELA#6895": 
     i = 1 
    x = 0 
    await client.send_message(message.channel, message.author) 
    while i == 0: 
     if commandz[x] in message.content: 
      x = x + 1 
      await client.send_message(message.channel, commandz[x]) 
      i = i + 1 
     else: 
      if x == len(commandz) - 2: 
       i = i + 1 
      else: 
       x = x + 2 
client.run(token) 

Das Ergebnis ist mein bot seine eigenen Befehle über und über Auslösung, ich habe alles versucht, um es nicht zu erkennen, es ist eigene Nachrichten und ich bin am Ende meines Wissens.

Ich denke, dass aus irgendeinem Grund message.author ist eine seltsame Art von Variable, die nicht in einem Vergleich verwendet werden kann, ich bin super neu zu programmieren und Python, so bin ich mir nicht sicher.

+0

Der von Ihnen gepostete Code wird nicht ausgeführt. Bitte überprüfe, ob alles, was eine eigene Zeile benötigt, es hat und alles eingerückt ist. –

+0

Ja, wenn das Format durcheinander gebracht Ill bearbeiten – trisimix

Antwort

0

können Sie versuchen, zu überprüfen, ob der Autor der Bot diese verwendet, ist:

if message.author.id === message.server.me.id 

diese Weise können Sie den Bot sicher sein kann, nicht selbst auslösen.

+0

Das hat 100% funktioniert. Wie hast du das herausgefunden? – trisimix

+0

@trisimix Haben Sie sich den Ordner 'examples' auf der github-Seite angeschaut? https://github.com/Rapptz/discord.py/blob/async/examples/reply.py –

+0

@trisimix, ich habe es für meinen Bot verwendet, aber ich denke, Sie können es in den Beispielen oder in einigen zufälligen Tutorials sehen. Auch, wenn es funktioniert, fühle mich frei, mir die richtige Antwort zu geben :) –

Verwandte Themen