Как вы можете создать основанную на реакции систему назначения ролей с Discord.py? - PullRequest
0 голосов
/ 03 июля 2018

Я пытался создать установку, в которой есть одно постоянное сообщение в текстовом канале, на которое пользователи могли бы реагировать, чтобы получить определенную роль. Из того, что я могу сказать, я наткнулся на способ сделать это, но мне не хватает того, что позволит ему работать. Вот что у меня есть:

import discord
from discord.ext.commands import Bot
from discord.ext import commands
from discord.utils import get

bot_prefix = "r!"
bot = commands.Bot(command_prefix=bot_prefix)

@bot.event
async def on_ready():
    print("Bot Online!")
    print("Name: {}".format(bot.user.name))
    print("ID: {}".format(bot.user.id))
    await bot.change_presence(game=discord.Game(name='Visit the roles channel!'))

class Main_Commands():
    def __init__(self, bot):
    self.bot = bot

# r!ping
@bot.command(pass_context=True)
async def ping(ctx):
    await bot.say("Pong!")

@bot.event
async def on_reaction_add(reaction, user):
    role = discord.utils.get(WHAT GOES HERE, name="463359356281421844")
    roleChannelId = "463374724702142464"
    if reaction.message.channel.id != roleChannelId:
        return
    if str(reaction.emoji) == u"\U0001F534":
        await bot.add_roles(user, role)

bot.run("TOKEN")

Кажется, я не могу понять, что именно мне нужно перечислить в качестве моей итерируемой. Я знаю, что нужно получить роли с сервера, я просто не знаю как. Кроме того, я понял, что on_reaction_add действительно работает, только если сообщение отправлено после , когда бот загружается, что не очень хорошо по многим причинам. Можете ли вы повторить, что я ищу, и есть ли способ избежать ловушки on_reaction_add?

...