Discord бот не отвечает на новые команды
Бот работает и отвечает на старые команды а вот на новые никак не хочет отвечать.В настройках Privileged Gateway Intents все галочки стоят и все разрешения выданы intents.message_content = True если даже убрать тоже не помогает код и без него работает
import discord
from discord.ext import commands
from steam import Steam
from decouple import config
# Получаем ключ API Steam и токен Discord из переменных среды или файла .env
KEY = config("STEAM_API_KEY")
TOKEN = config("Discord_API_TOKEN")
# Инициализируем клиент API Steam
steam = Steam(KEY)
# Определяем app ID для Squad (ID игры в Steam)
squad_app_id = 393380
# Настраиваем намерения Discord для доступа к содержимому сообщений
intents = discord.Intents.all()
intents.message_content = True
# Создаем клиент Discord
client = discord.Client(intents=intents)
# Определяем дерево команд
tree = discord.app_commands.CommandTree(client)
# Словарь для хранения привязок Steam ID к Discord ID
bindings = {}
# Функция для проверки валидности Steam ID
def check_steamid(steam_id):
if len(steam_id) == 17 and steam_id.isdigit():
return True
return False
# Функция для получения времени игры в Squad
def get_playtime(games, squad_app_id):
for game in games:
if game.get('appid') == squad_app_id:
return game.get('playtime_forever', None)
return None
# Обработчик события, когда бот готов и подключен к Discord
@client.event
async def on_ready():
print("Бот Discord запущен.")
# Slash-команда для отображения статистики Squad
@tree.command(name="squadstats", description="Время игры в Squad")
async def squad_command(interaction):
# Запрашиваем Steam ID пользователя
await interaction.response.send_message("Введите ваш Steam ID:")
# Определяем функцию проверки для фильтрации сообщений от одного и того же пользователя
def check(m):
return m.author == interaction.user and m.channel == interaction.channel
# Ожидаем от пользователя отправки его Steam ID
steam_id = await client.wait_for('message', check=check)
# Проверка валидности Steam ID
if not check_steamid(steam_id.content):
await interaction.followup.send("Неверный Steam ID. Пожалуйста, введите 17-значный цифровой код.")
return
# Получаем список игр пользователя из Steam
try:
user_games = steam.users.get_owned_games(steam_id.content)
except Exception as e:
await interaction.followup.send(f"Ошибка: {e}")
return
# Извлекаем список игр
try:
games = user_games['games']
except KeyError:
await interaction.followup.send("В настройках конфиденциальности откройте доступ к вашим играм.")
return
# Ищем Squad в списке игр
playtime_forever = get_playtime(games, squad_app_id)
# Выводим результат
if playtime_forever is not None:
playtime_hours = round(playtime_forever / 60, 1)
await interaction.followup.send(f"Время игры в Squad: {playtime_hours:.1f} часов")
else:
await interaction.followup.send("Игра Squad не найдена в списке игр пользователя.")
# Slash-команда для привязки Steam ID
@tree.command(name="bindsteamid", description="Привязывает ваш Steam ID к профилю")
async def bind_command(interaction):
# Запрашиваем Steam ID пользователя
await interaction.response.send_message("Введите ваш Steam ID:")
# Проверяем, был ли уже привязан Steam ID к этому пользователю
if interaction.author.id in bindings:
await interaction.send("Ваш Steam ID уже привязан к профилю.")
return
# Определяем функцию проверки для фильтрации сообщений от одного и того же пользователя
def check(m):
return m.author == interaction.user and m.channel == interaction.channel
# Ожидаем от пользователя отправки его Steam ID
steam_id = await client.wait_for('message', check=check)
@tree.command(name="unbindsteamid", description="Отвязывает ваш Steam ID от профиля")
async def unbind_command(interaction):
# Проверяем, был ли привязан Steam ID к этому пользователю
if interaction.author.id not in bindings:
await interaction.send("Ваш Steam ID не привязан к профилю.")
return
# Удаляем Steam ID из словаря
del bindings[interaction.author.id]
# Отправляем сообщение о successful unbind
await interaction.send("Ваш Steam ID успешно отвязан от профиля.")
@tree.command(name="ded", description="description")
async def slash_command(interaction: discord.Interaction):
await interaction.response.send_message("command")
client.run(TOKEN)
Ответы (1 шт):
Автор решения: Airon
→ Ссылка
Оказалось нужно было в настройках сервера выдать боту все нужные разрешения хотя это уже было сделано когда бот добавлялся на сервер