【发布时间】:2020-08-04 18:54:28
【问题描述】:
嘿,我正在用 Python 开发一个 Discord Bot。这是文档:https://discordpy.readthedocs.io/en/latest/index.html
我会问一个问题。我在 Python 中制作了一个不和谐的机器人,我需要帮助:
是否可以在我可以关联的不和谐机器人中实现功能?我想在事件 on_raw_reaction_add 中包含整个票务系统。这甚至可能吗?如果这是不可能的,那么如何引用给定的票证?
我想在票务系统中包含一个条件。创建票证时,用户获得等级“A”。如果他已经有这个等级,机器人会写信给他,说他已经创建了一张票,将无法再创建一张票。有谁知道如何检查用户是否有排名?我知道@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)
感谢您提供各种形式的帮助。你是最棒的
【问题讨论】:
-
您是否尝试过数据存储,例如使用 JSON 并检查 JSON 文件中的用户数据,当创建票证时,您可以将数据转储到 JSON 文件中,其中包含一些信息,例如用户 ID,以及也许该票的唯一标识符?我做了一个票务系统,这就是我所做的。
标签: python discord discord.py-rewrite