@SofiaSonya

Что делать если бот дискорд не отвечает на комнды?

Не реагирует вообще на любую команду код ниже

spoiler
from discord.ext import commands
import discord

intents = discord.Intents.default()
intents.members = True

bot = commands.Bot(command_prefix='!', intents=intents)

@bot.event
async def on_ready():
    print(f'Bot is ready. Logged in as {bot.user.name}')

@bot.command()
async def hello(ctx):
    await ctx.send('Hello, I am your bot!')
    
@bot.command()
async def ban(ctx, member: discord.Member):
    if ctx.author.guild_permissions.administrator:
        await member.ban()
        await ctx.send(f'{member.name} has been banned.')
    else:
        await ctx.send('You don`t have permissions to use this command!')
        
@bot.command()
async def mute(ctx, member: discord.Member):
    if ctx.author.guild_permissions.administrator:
        await mute(ctx, member)
        await ctx.send(f'{member.name} has been muted.')
    else:
        await ctx.send('You don`t have permissions to use this command!')

@bot.command
async def speedtest(ctx):
    st = speedtest.Speedtest()
    download_speed = st.download() / 1024 / 1024
    upload_speed = st.upload() / 1024 / 1024
    await ctx.send(f"Speed download: {download_speed:.2f} Mbps")
    await ctx.send(f"Speed upload: {upload_speed:.2f} Mbps")

@bot.command()
async def ping(ctx):
    response_time = pythonping.ping('google.com').rtt_avg_ms
    await ctx.send(f"Ping google.com: {response_time:.2f} ms")
    
@bot.command()
@commands.has_permissions(kick_members=True)
async def warn(ctx, member: discord.Member, *, reason=None):
    await member.send(f'Adadwdsa {ctx.guild.name}. Wdada: {reason}')
    await ctx.send(f'sadwds {member.mention} sadwdsa. DWdada: {reason}')

@warn.error
async def warn_error(ctx, error):
    if isinstance(error, commands.MissingRequiredArgument):
        await ctx.send('dwadwd')
    elif isinstance(error, commands.MissingPermissions):
        await ctx.send('You don`t have permissions to use this command!')

bot.run('token')
  • Вопрос задан
  • 326 просмотров
Пригласить эксперта
Ответы на вопрос 2
Vindicar
@Vindicar
RTFM!
Если ты используешь не slash commands, а классические команды в сообщениях, то боту нужно иметь доступ к тексту сообщений. А значит, нужен интент guild_messages (и dm_messages для команд в личке).
Собственно, slash commands для того и ввели, чтобы ботов не оповещать постоянно о болтовне в чате на случай если там вдруг проскользнёт команда.
Ответ написан
SoreMix
@SoreMix
yellow
А зачем у вас аж 3 библиотеки для работы с дискордом в одном проекте (если pycord ставился вообще для дискорда, а не как враппер для ffmpeg конечно)?

Сначала надо бы определиться с какой библиотекой хотите работать. Тот же py-cord является форком для discord.py, и использует то же самое название для импорта. Поэтому, если он реально установлен надо его удалить, если не планируете использовать. А так удаляем лишние библиотеки из импорта и переписываем под одну. Потому что сейчас бот работает на discord.py, утилсы и эмбед тянет из disnake.

По поводу почему команды не работают - не хватает нужных Intents, конкретно intents.message_content = True, но лично я бы не парился и просто сделал бы вместо intents = discord.Intents.default() так: intents = discord.Intents.all()

https://discordpy.readthedocs.io/en/stable/intents.html
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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