Данная система нужна для простой системы тикетов. Человек нажимает на реакцию в основном канале и для него создаётся канал для обсуждения.
Полный код :
@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