Answer the question
In order to leave comments, you need to log in
How to fix the part of the code that should keep track of clicked reaction by id?
This system is needed for a simple ticket system. A person clicks on the reaction in the main channel and a discussion channel is created for him.
Full code :
@bot.event
async def on_raw_reaction_add(payload):
logchannel = bot.get_channel(846806809435832330)
reac = [826434357870592060,746008504573100173]
guild = bot.get_guild(741317239617224764)
if payload.message_id == 846808287147196437 and payload.emoji.id == 826434357870592060:
if not payload.member.id in voprosmembers:
global countervopros
countervopros += 1
voprosmembers.append(payload.member.id)
tickchnl = await bot.fetch_channel(846808169463545856)
msg = await tickchnl.fetch_message(payload.message_id)
await msg.remove_reaction(payload.emoji,payload.member)
mainCategory = discord.utils.get(guild.categories, id=846808468946288671)
channel2 = await guild.create_text_channel(f"Вопрос discord {payload.member.name}", category = mainCategory)
role = discord.utils.get(guild.roles,id=741341677855309924)
await channel2.set_permissions(role,send_messages=True,read_messages=True,read_message_history=True)
await channel2.set_permissions(payload.member,send_messages=True,read_messages=True,read_message_history=True)
await channel2.set_permissions(guild.default_role,send_messages=False,read_messages=False,read_message_history=False)
emb1 = discord.Embed(title='Что это за канал?', description='Здесь ты можешь задать вопрос напрямую команде администрации / модерации discord сервера.. Хочешь получить ответ скорее? Опиши вопрос подробно, понятно и в одном сообщении.', color = 0x2f3136)
nhtrhtrjtremb1 = discord.Embed(title='Когда мне ответят?', description=" Вопросы и жалобы разбираются в порядке очереди. С полудня и до полуночи за ответами следит бот: если с момента отправки последнего сообщения прошло более 30 минут, а тебе не ответили - можешь упоминуть права доступа проекта. Поэтому, пожалуйста, пиши одним сообщением.", color = 0x2f3136)
embed3 = discord.Embed(title='', description=':small_red_triangle_down: Кликни на реакцию ниже чтобы закрыть обращение.', color = 0x2f3136)
await channel2.send(embed=emb1)
await channel2.send(embed=nhtrhtrjtremb1)
msgtic = await channel2.send(embed=embed3)
await msgtic.add_reaction('<:ndd:846801353833185310>')
delete = await channel2.send(content = f'{payload.member.mention}') # <@&741341677855309924>')
await delete.delete()
def reaction_check(m):
return m.message_id == msgtic.id and m.member.guild_permissions.view_audit_log == True and m.emoji.id in reac
reaction = await bot.wait_for("reaction_add", check=reaction_check)
if reaction.emoji.id == 846801353833185310:
embedth = discord.Embed(title='Обращение закрыто', colour=0x2f3136)
embedth.add_field(name='Закрыл обращение:', value=f'{reaction.member}')
embedth.add_field(name='Обращение открыто:', value=f'{payload.member}')
with open(f"question_discord.txt", "a", encoding='utf8') as f:
async for msg12 in channel2.history(limit = 100):
f.write(f"{msg12.created_at}:{msg12.author} ({msg12.author.id}): {msg12.content} \n")
await logchannel.send(embed=embedth,file=File(f'question_discord.txt'))
voprosmembers.remove(payload.member.id)
await channel2.delete()
os.remove(f'question_discord.txt')
await payload.member.send(f'{reaction.member.name} закрыл твое обращение.')
return
Answer the question
In order to leave comments, you need to log in
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question