-
Автор темы
- #1
Пишу бота через ИИ для мафии в дискорде для большего удобства расскидывания ролей каждому игрок. Ниже код который использую и запрос/ответ в чате с ИИ
библиотеку дискорда установил, токен в код вписал, разрешения на сайте (
бота самого запустил через консоль у себя на пк. В дискорде отображается он как "в сети"
Теперь сама проблема: прописываю команду !выбрать_ведущего и пингую себя в одном сообщении, находясь при этом в единственном голосовом канале на сервере с еще 2-мя пользователями и от бота 0 реакции, даже не пишет что что-то не так.
Помогите пожалуйста, буду очень благодарен, отвечу на все вопросы на которые смогу ответить
Запрос:
Напиши мне бота на пайтоне для дискорда
Бот должен уметь менять никнейм Ведущему и игрокам. Ведущий выбирается в специальном окне в основном чате и после выбора бот должен изменить никнейм выбранного участника на "!Ведущий", а игрокам выдать порядковый номер 1, 2, 3 и т.д.
Бот должен уметь раздавать каждому игроку, который находится в определенном голосовом канале, роли - мафия, доктор, шериф, путана и мирный житель. Роли должны писаться в ЛС игроку, например тот игрок кому выпала роль мафии, ему в лс от бота придет сообщение о том что он мафия. Не должно быть такого чтобы каждому игроку писалась информация о том у кого какая роль.
Все роли игроков должны отправляться в ЛС ведущему. Например: игрок 1 - мафия, игрок 4 - мирный житель
Ответ:
Создание такого бота для Discord на Python требует использования библиотеки discord.py, которая позволяет взаимодействовать с API Discord. Предполагая, что вы уже установили эту библиотеку, вот пример кода, который реализует описанные вами функции.
Прежде всего, убедитесь, что у вас есть токен вашего бота и вы добавили необходимые разрешения, чтобы бот мог управлять ролями и изменять никнеймы.
Вот простой пример кода, который делает то, что вы описали:
В этом коде:
Напиши мне бота на пайтоне для дискорда
Бот должен уметь менять никнейм Ведущему и игрокам. Ведущий выбирается в специальном окне в основном чате и после выбора бот должен изменить никнейм выбранного участника на "!Ведущий", а игрокам выдать порядковый номер 1, 2, 3 и т.д.
Бот должен уметь раздавать каждому игроку, который находится в определенном голосовом канале, роли - мафия, доктор, шериф, путана и мирный житель. Роли должны писаться в ЛС игроку, например тот игрок кому выпала роль мафии, ему в лс от бота придет сообщение о том что он мафия. Не должно быть такого чтобы каждому игроку писалась информация о том у кого какая роль.
Все роли игроков должны отправляться в ЛС ведущему. Например: игрок 1 - мафия, игрок 4 - мирный житель
Ответ:
Создание такого бота для Discord на Python требует использования библиотеки discord.py, которая позволяет взаимодействовать с API Discord. Предполагая, что вы уже установили эту библиотеку, вот пример кода, который реализует описанные вами функции.
Прежде всего, убедитесь, что у вас есть токен вашего бота и вы добавили необходимые разрешения, чтобы бот мог управлять ролями и изменять никнеймы.
Вот простой пример кода, который делает то, что вы описали:
Python:
import discord
from discord.ext import commands
import random
intents = discord.Intents.default()
intents.members = True # Необходимо, чтобы бот мог управлять участниками и ролями
bot = commands.Bot(command_prefix='!', intents=intents)
# Список ролей
roles = ["мафия", "доктор", "шериф", "путана", "мирный житель"]
role_dict = {}
@bot.event
async def on_ready():
print(f'Мы вошли как {bot.user}')
@bot.command(name='выбрать_ведущего')
@commands.has_permissions(manage_roles=True)
async def выбрать_ведущего(ctx, member: discord.Member):
await member.edit(nick="!Ведущий")
await ctx.send(f'{member.mention} теперь ведущий!')
# Присваиваем номера всем участникам голосового канала
voice_channel = member.voice.channel
players = [m for m in voice_channel.members if not m.bot]
for i, player in enumerate(players, start=1):
await player.edit(nick=str(i))
# Раздаем роли
assigned_roles = random.sample(roles, len(players)) # Перемешиваем роли
for player, role in zip(players, assigned_roles):
await assign_role(ctx, player, role)
if player.id not in role_dict:
role_dict[player.id] = role
# Отправляем роли ведущему
roles_info = "\n".join([f'Игрок {i + 1}: {role_dict[player.id]}' for i, player in enumerate(players)])
await member.send(f'Роли игроков:\n{roles_info}')
async def assign_role(ctx, player, role):
# Отправляем сообщение о роли в ЛС игроку
await player.send(f'Ваша роль: {role}')
# Обработчик ошибок для команды выбора ведущего
@выбрать_ведущего.error
async def choose_host_error(ctx, error):
if isinstance(error, commands.MissingPermissions):
await ctx.send("У вас нет прав для использования этой команды.")
TOKEN = 'ВАШ_ТОКЕН_ЗДЕСЬ'
bot.run(TOKEN)
- Бот реагирует на команду !выбрать_ведущего, после чего меняет никнейм выбранного участника на !Ведущий.
- Ведущий выбирается из общего чата, и бот собирает всех участников из голосового канала, в котором находится ведущий.
- Никнеймы игрокам меняются на последовательные номера (1, 2, 3 и так далее).
- Каждому игроку случайным образом присваивается одна из ролей: "мафия", "доктор", "шериф", "путана", "мирный житель". Игроку отправляется ЛС с информацией о его роли.
- Ведущему отправляется полное сообщение со списком ролей всех игроков.
библиотеку дискорда установил, токен в код вписал, разрешения на сайте (
Пожалуйста, авторизуйтесь для просмотра ссылки.
) выдал все (поставил галочку на чекбоксе "bot" и права админа)бота самого запустил через консоль у себя на пк. В дискорде отображается он как "в сети"
Теперь сама проблема: прописываю команду !выбрать_ведущего и пингую себя в одном сообщении, находясь при этом в единственном голосовом канале на сервере с еще 2-мя пользователями и от бота 0 реакции, даже не пишет что что-то не так.
Помогите пожалуйста, буду очень благодарен, отвечу на все вопросы на которые смогу ответить

я попросил ИИ переписать код и теперь бот пишет вот такое сообщ:
Произошла ошибка: Command raised an exception: Forbidden: 403 Forbidden (error code: 50013): Missing Permissions
Ошибка как я понял с правами доступа, но все права в самом дискорде выданы, может проблема с сайтом где ссылку на приглашение бота настраивать?
Произошла ошибка: Command raised an exception: Forbidden: 403 Forbidden (error code: 50013): Missing Permissions

Ошибка как я понял с правами доступа, но все права в самом дискорде выданы, может проблема с сайтом где ссылку на приглашение бота настраивать?
проблему ошибки понял, бот может менять ник всем кроме создателя сервера. Вопрос: как сделать так чтобы он мог это делать?
Последнее редактирование: