(Discord Bot) on_raw_reaction_add (полезная нагрузка) проблемы (система тикетов) - PullRequest
0 голосов
/ 22 апреля 2020

Эй, я разрабатываю Discord Bot с Python. Вот документация: https://discordpy.readthedocs.io/en/latest/index.html

Я бы задала вопрос. Я делаю бот-дискордант в Python, и мне нужна помощь:

  1. Можно ли настроить бот-диск, который я могу относиться к? Я хотел бы включить всю систему продажи билетов в событие on_raw_reaction_add. Это вообще возможно? Если это невозможно, то как ссылаться, например, на данный билет?

  2. Я хотел бы включить условие в систему продажи билетов. При создании тикета пользователь получает звание «А». Если он уже имеет этот ранг, бот напишет ему, что он уже создал билет и не сможет создать другой билет. У кого-нибудь есть идеи, как я могу проверить, есть ли у пользователя звание? Я знаю, что @ command.has_role существует, но это не будет работать для условия.

Это мой код:

@client.event
async def on_raw_reaction_add(payload):
        message_id = payload.message_id
        if message_id == 701490140110913568:
                guild_id = payload.guild_id
                guild = discord.utils.find(lambda g : g.id == guild_id, client.guilds)
                if payload.emoji.name == 'koperta':
                                print("zlotek")
                                channel = client.get_channel(payload.channel_id)
                                message = await channel.fetch_message(payload.message_id)
                                user = client.get_user(payload.user_id)
                                emoji = client.get_emoji(700845595103068211)
                                await message.remove_reaction(emoji, user)
                                name = '✅ OPENED TICKETS ✅'
                                category = discord.utils.get(guild.categories, name=name)
                                overwrites = overwrites = {
                                guild.default_role: discord.PermissionOverwrite(read_messages=False),
                                guild.me: discord.PermissionOverwrite(read_messages=True)
                                }
                                await guild.create_text_channel(f'Ticket-0001', category=category, overwrites=overwrites)
                                role = discord.utils.get(guild.roles, name='A')
                                member = discord.utils.find(lambda m : m.id == payload.user_id, guild.members)
                                await member.add_roles(role)

Спасибо за все формы помощи Ты лучший

...