Я пытался создать установку, в которой есть одно постоянное сообщение в текстовом канале, на которое пользователи могли бы реагировать, чтобы получить определенную роль. Из того, что я могу сказать, я наткнулся на способ сделать это, но мне не хватает того, что позволит ему работать. Вот что у меня есть:
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
?