import disnake
from disnake.ext import commands
from disnake.ui import Button, ButtonStyle
import asyncio
bot = commands.Bot(command_prefix="!")
ticket_counter = 1 # Инициализируем счетчик тикетов
open_tickets = {} # Словарь для хранения открытых тикетов
@bot.command()
async def ticket_create(ctx):
global ticket_counter
channel = await ctx.guild.create_text_channel(f'ticket-{ticket_counter}')
ticket_counter += 1
# Сохраняем информацию о тикете
open_tickets[channel.id] = ctx.author
message = await channel.send("Привет, нажми на кнопку ниже чтобы создать тикет",
components=[Button(label="Создать", style=ButtonStyle.green)])
def check(res):
return res.user == ctx.author and res.channel == channel
res = await bot.wait_for("button_click", check=check)
if res.component.label == "Создать":
await message.edit(content="Тикет создан. Администраторы скоро ответят.",
components=[Button(label="Отменить", style=ButtonStyle.red),
Button(label="Решено", style=ButtonStyle.green)])
await channel.send(f"{ctx.author.mention}, ваш тикет открыт! Ожидайте ответа администратора.")
while True:
res = await bot.wait_for("button_click", check=check)
if res.component.label == "Отменить":
await channel.send("Тикет закрыт администратором. Удаление через 10 секунд")
await asyncio.sleep(10)
await channel.delete()
del open_tickets[channel.id]
break
elif res.component.label == "Решено":
await channel.send("Администратор решил этот тикет. Удаление через 10 секунд.")
await asyncio.sleep(10)
await channel.delete()
del open_tickets[channel.id]
break
@bot.command()
async def view_tickets(ctx):
if open_tickets:
tickets_list = "\n".join([f"<#{channel_id}> - Открыт пользователем {user.mention}"
for channel_id, user in open_tickets.items()])
await ctx.send(f"Открытые тикеты:\n{tickets_list}")
else:
await ctx.send("Нет открытых тикетов.")
@bot.command()
async def assign_ticket(ctx, ticket_channel: disnake.TextChannel):
if ticket_channel.id in open_tickets:
await ticket_channel.send(f"{ctx.author.mention} назначен на этот тикет.")
else:
await ctx.send("Указанный тикет не существует или закрыт.")
# Запуск бота
bot.run("YOUR_BOT_TOKEN")
from disnake.ui import Button, ButtonStyle
@bot.command()
async def ticket_create(ctx):
global ticket_counter
channel = await ctx.guild.create_text_channel(f'ticket-{ticket_counter}')
ticket_counter += 1
message = await channel.send(
"Привет, нажми на кнопку ниже, чтобы создать тикет",
components=[Button(label="Создать", style=ButtonStyle.green)]
)
def check(res):
return res.user == ctx.author and res.channel == channel
res = await bot.wait_for("button_click", check=check)
if res.component.label == "Создать":
await message.edit(
content="Тикет создан. Администраторы скоро ответят.",
components=[
Button(label="Отменить", style=ButtonStyle.red),
Button(label="Решено", style=ButtonStyle.green)
]
)
while True:
res = await bot.wait_for("button_click", check=check)
if res.component.label == "Отменить":
await channel.send("Тикет закрыт администратором. Удаление через 10 секунд")
await asyncio.sleep(10)
await channel.delete()
break
elif res.component.label == "Решено":
await channel.send("Администратор решил этот тикет. Удаление через 10 секунд.")
await asyncio.sleep(10)
await channel.delete()
break
import disnake
from disnake.ext import commands
from disnake import Button, ButtonStyle
import asyncio
bot = commands.Bot(command_prefix='!') # Установите префикс для команд
ticket_counter = 1 # Инициализация счетчика тикетов
@bot.command()
async def ticket_create(ctx):
global ticket_counter
# Создаем текстовый канал для тикета
channel = await ctx.guild.create_text_channel(f'ticket-{ticket_counter}')
ticket_counter += 1
# Отправляем сообщение с кнопкой "Создать"
message = await channel.send(
"Привет, нажми на кнопку ниже чтобы создать тикет",
components=[Button(label="Создать", style=ButtonStyle.green)]
)
def check(res):
return res.user == ctx.author and res.channel == channel
# Ожидаем нажатия кнопки "Создать"
res = await bot.wait_for("button_click", check=check)
if res.component.label == "Создать":
await message.edit(
content="Тикет создан. Администраторы скоро ответят.",
components=[
Button(label="Отменить", style=ButtonStyle.red),
Button(label="Решено", style=ButtonStyle.green)
]
)
while True:
res = await bot.wait_for("button_click", check=check)
if res.component.label == "Отменить":
await channel.send("Тикет закрыт администратором. Удаление через 10 секунд.")
await asyncio.sleep(10)
await channel.delete()
break
elif res.component.label == "Решено":
await channel.send("Администратор решил этот тикет. Удаление через 10 секунд.")
await asyncio.sleep(10)
await channel.delete()
break
# Запуск бота
bot.run('YOUR_BOT_TOKEN')
Вот код который я написал использую библиотеку Disnake
Вот ошибка
Command raised an exception: NameError: name 'Button' is not defined
ну и там много их. ВОобщем прошу поомчь. Заранее всем спасибо