2017-06-05 1 views
-1

J'essaie de faire en sorte que si un utilisateur active test, il affichera un menu de test dans le salon de discussion et si ce même utilisateur affiche une réaction sur un message, il supprimera ce menu de test:Comment partager des objets entre différentes fonctions

import discord, asyncio 

client = discord.Client() 

@client.event 
async def on_message(message): 
    if message.content.lower().startswith('test'): 
     menu = await client.send_message(message.channel, "test menu") 

@client.event 
async def on_reaction_add(reaction, user): 
    if user == message.author: 
     await client.delete_message(menu) 

client.run('ClientToken') 

Cependant, le code ne lit pas les objets comme message.author ou menu de l'autre fonction.

Répondre

1

Vous pouvez simplement créer un dictionnaire pour contenir les valeurs de message et d'auteur.

test = {'message': None, 'author': None} 

@client.event 
async def on_message(message): 
    if message.content.lower().startswith('test'): 
     menu = await client.send_message(message.channel, "test menu") 
     test['message'] = menu 
     test['author'] = message.author 

@client.event 
async def on_reaction_add(reaction, user): 
    if user == test['author']: 
     await client.delete_message(test['message']) 
+0

il semble que le test devrait être * global *, non? – rth