Задать вопрос
@CramSally

Что делать, если бот не реагирует на команды?

Недавно писал бота для дискорда, всё работало на отлично, потом я решил сделать слэш команды и что-то не удалось, не получилось. Я переписал код назад, но всё сломалось. Решил сделать нового бота, вдруг была проблема именно в нём, но нет, новый бот тоже отказывается работать, хотя код до этого был рабочий. Я даже SERVER MEMBERS INTENT включил, но ничего. Искал в инете, но видимо плохо искал и ничего по этой проблеме не нашёл. Бот просто перестал реагировать на команды Вот код:

import discord
import asyncio
from discord.ext import commands
from main import settings

bot = commands.Bot(command_prefix=settings['prefix'])

@bot.command()
async def clear(ctx, amount=None):
    await ctx.channel.purge(limit=int(amount))
    embed = discord.Embed(
        title=f'Чат был очищен, {amount} сообщений было удалено.', colour=discord.Color.blue()
    )
    await ctx.send(embed=embed)
    await asyncio.sleep(10)
    await ctx.channel.purge(limit=1)

bot.run(settings['token'])


Помогите пожалуйста бедному программисту
  • Вопрос задан
  • 2170 просмотров
Подписаться 1 Простой 3 комментария
Решения вопроса 1
Lapita12
@Lapita12
Тесты, тесты?
Если ваш бот перестал реагировать на команды, возможно, что проблема связана с разрешениями, присвоенными боту на сервере Discord. Убедитесь, что ваш бот имеет правильные разрешения доступа, чтобы просматривать и отправлять сообщения в канал, в котором вы пытаетесь использовать команду.

Также убедитесь, что вы правильно настроили Intents для вашего бота, чтобы ваш бот мог получать ивенты, которые ему нужны. В вашем коде пока что нет никакой настройки Intents. Проверьте, что вы настроили их правильно, и добавьте нужные Intents для вашего бота:
intents = discord.Intents.default()
intents.members = True  # добавляем этот Intent, если мы прописали команду clear с аргументом "amount"
bot = commands.Bot(command_prefix=settings['prefix'], intents=intents)


Также добавьте обработку ошибок, чтобы увидеть, возможно, ли бот выдавать какие-либо ошибки:
@bot.event
async def on_command_error(ctx, error):
    await ctx.send(f'Произошла ошибка: {error}')


Если вы добавите этот код, то при возникновении ошибки во время выполнения команды бот сообщит вам о ней и вы сможете понять, какую ошибку выдает ваш бот.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@vladislavlisitsyn
Во первых неуказан токен бота, но возможно вы его специально вырезали.
Во вторых, вы забыли добавить intents
Пропишите:
intents = disnake.Intents.all()
intents.members = True
intents.presences = True

client = commands.Bot(command_prefix=config['prefix'], intents=intents)


Более без ошибки в консоли сказать не могу, ибо в самом коде больше косяков не нашёл
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы