2017-09-14 6 views
0

Okay, ich mache einen Python Discord Bot mit Discord Python API. Ich versuche, die Nachricht zu vergleichen, nachdem sie den Befehl? Event_add {message/event, den sie hinzufügen möchten} an die aktuelle Liste der Ereignisse gesendet haben. Wenn die Nachricht mit der aktuellen Liste von Ereignissen übereinstimmt, würde der Bot mit einer Nachricht zurückkehren, die besagt, dass wir das Ereignis bereits haben. Mein Problem ist, dass die Zeichenfolge nicht mit der Liste vergleichen möchte und immer zurückgibt, dass sie nicht übereinstimmt.Python Discord Bot Vergleicht die Nachricht mit der Liste

OS: Windows 10 Creators aktualisieren

Python: 3.6.2

Discord.py: https://discordpy.readthedocs.io/en/latest/, GitHub: https://github.com/Rapptz/discord.py

Code:

import discord 
from discord.ext import commands 
import logging 
import sys 
import time 
import asyncio 

bot = commands.Bot(command_prefix="/") 
console = discord.Object("357208549614419970") 
events = {"learn to bake"} 


@bot.event 
async def on_ready(): 
    print("Logged in as: ") 
    print(bot.user.id) 
    print(bot.user.name) 
    print("******************") 

@bot.command(pass_context = True) 
async def test(ctx): 
    await bot.say("Testing...... Am I a real boy yet?") 
    events = ['drawn out a dragon, and do a hand stand'] 
    await bot.say(events) 

@bot.command(pass_context = True) 
async def add_event(ctx, event): 
    if event in events: 
     await bot.say("Sorry we already have that, also we need to teach %s 
to read. Add that to the list please." % ctx.message.author.mention) 
    else: 
     await bot.say("Something is broken %s" % ctx.message.author.mention) 
+0

Bitte posten Sie einen kurzen Codeabschnitt, der das Problem verursacht, anstatt nur das gesamte Programm einzufügen. – squaswin

Antwort

0

Es sieht aus wie Sie sind definiere events im globalen Gültigkeitsbereich als einen Satz und versuche dann, es in test() zu redifine.

Die events in test() definiert ist auf einem lokalen Bereich, was bedeutet, es wird am Ende des Funktionsaufrufs gelöscht werden, während die events Sie versuchen, in add_event() zu verwenden, die auf dem globalen Bereich ist, der nichts hat zu mach mit dem in test().

Wie auch immer, um es zu beheben, fügen Sie einfach eine global events an die Spitze test(). Dies bedeutet, dass wenn Sie events neu definieren, ersetzen Sie die bereits globale.