Код:
import discord
from discord.ext import commands
from discord import Option
from datetime import timedelta
from discord.ext import commands
from discord.ext.commands import MissingPermissions
import asyncio
from datetime import datetime
@bot.command(guild_ids=[985912915355918346],description="""Создать новый тикет""")
async def тикет(ctx,reason):
await ctx.respond("Подождите! Мы работаем над вашем тикетом!",ephemeral=True)
categ=discord.utils.get(ctx.guild.categories,name="・СНГ | Открытые тикеты")
for ch in categ.channels:
if ch.topic==str(ctx.author.id):
return await ch.send(f"{ctx.author.mention}! У вас нету здесь тикетов")
r1=ctx.guild.get_role(1024968938418864158)
overwrite={
ctx.guild.default_role:discord.PermissionOverwrite(read_messages=False),
ctx.me:discord.PermissionOverwrite(read_messages=True),
ctx.author:discord.PermissionOverwrite(read_messages=True),
r1:discord.PermissionOverwrite(read_messages=True)
} #creating overwrites/permission for channel
channel=await categ.create_text_channel(name=f"{ctx.author.name}-{ctx.author.discriminator}",overwrites=overwrite,topic=f"{ctx.author.id}")
em=discord.Embed(title="Создан новый тикет!",
description=f"Тикет был создан участником {ctx.author.mention}",
timestamp=datetime.utcnow(),
color=discord.Color.random())
await asyncio.sleep(3)
await ctx.respond(f"{channel.mention} Нажмите чтобы перейти к тикету",ephemeral=True)
await channel.send(embed=em)
@bot.command(guild_ids=[985913973054513252],description="""Закрыть тикет""")
async def закрыть(ctx):
if ctx.channel.category.name!="・СНГ | Открытые тикеты":
return await ctx.respond("Вы не можете использовать эту команду тут",ephemeral=True)
await ctx.respond("Тикет закрыт")
categ=discord.utils.get(ctx.guild.categories,name="・СНГ | Закрытые тикеты")
ch=ctx.channel
r1=ctx.guild.get_role(1024968938418864158)
overwrite={ # creating overwrites
ctx.guild.default_role:discord.PermissionOverwrite(read_messages=False),
ctx.me:discord.PermissionOverwrite(read_messages=True),
r1:discord.PermissionOverwrite(read_messages=True)
}
await ch.edit(category=categ,overwrites=overwrite)
mem=await ctx.guild.fetch_member(int(ch.topic))
await ch.send(file=discord.File(f"{mem.id}.txt"))
os.remove(f"{mem.id}.txt")
@bot.command(guild_ids=[1024968938418864158],description="""Удалить тикет""")
async def удалить(ctx):
if ctx.channel.category.name!="・СНГ | Закрытые тикеты":
return await ctx.respond("Вы не можете использовать эту команду тут", ephemeral=True)
await ctx.respond("Тикет удалится через 5 секунд")
await asyncio.sleep(5)
await ctx.channel.delete()
@bot.event
async def on_message(msg):
if msg.author.bot:
return
if msg.channel.category.name=="・СНГ | Открытые тикеты":
mem=msg.author
topic=msg.channel.topic
tick=await msg.guild.fetch_member(int(topic))
text=open(f"{tick.id}.txt","a")
text.write(f"Name: {msg.author.name}#{msg.author.discriminator}, {msg.content}\n")
text.close()
Ошибка: c:\bot>py bot.py
Ignoring exception in on_connect
Traceback (most recent call last):
File "C:\Users\pasha\AppData\Local\Programs\Python\Python39\lib\site-packages\discord\client.py", line 382, in _run_event
await coro(*args, **kwargs)
File "C:\Users\pasha\AppData\Local\Programs\Python\Python39\lib\site-packages\discord\bot.py", line 1055, in on_connect
await self.sync_commands()
File "C:\Users\pasha\AppData\Local\Programs\Python\Python39\lib\site-packages\discord\bot.py", line 657, in sync_commands
app_cmds = await self.register_commands(
File "C:\Users\pasha\AppData\Local\Programs\Python\Python39\lib\site-packages\discord\bot.py", line 485, in register_commands
prefetched_commands = await self._bot.http.get_guild_commands(self._bot.user.id, guild_id)
File "C:\Users\pasha\AppData\Local\Programs\Python\Python39\lib\site-packages\discord\http.py", line 353, in request
raise Forbidden(response, data)
discord.errors.Forbidden: 403 Forbidden (error code: 50001): Missing Access
spoilerИспользую библиотеку PyCord