Я пишу команду для добавления ролей пользователю, заставляя его реагировать на сообщение. вот мой код:
@BOT.command(pass_context = True , name = "join_game")
async def join_game(context):
roles = {"minecraft" : "minecraft" , "AC" : "animal crossing" , "pokemon" : "pokemon"} #"emoji_name" : "role_name" , ...
roleEmojis = {get(context.message.guild.emojis, name = emoji_name) : get(context.message.guild.roles , name = role_name) for emoji_name , role_name in zip(roles , roles.keys())}
reactions = []
msg = await context.message.channel.send("react with which game(s) you would like to be a part of.\n**press the :OK: when you are done**")
for emoji in roleEmojis.keys():
await msg.add_reaction(emoji)
await msg.add_reaction(get(context.message.guild.emojis, name = "OK"))
while True:
reaction , user = await BOT.wait_for("reaction_add" , check = lambda react , user : True if react in [emoji for emoji in roleEmojis.keys()] and user == BOT.user else False)
if reaction == get(context.message.guild.emojis, name = "OK"):
continue
else:
reactions.append(reaction)
print(reactions)
#add roles
все работает так, как ожидалось, ошибок нет, но он не обнаруживает, когда я добавляю реакцию, так как нет вывода, а пока l oop продолжается навсегда, не ломаясь. Я уверен, что это связано с моей функцией проверки, но, честно говоря, я не совсем уверен. Не то чтобы это моя первая попытка создать своего первого бота, и я, вероятно, пропустил что-то очень очевидное.