@yuckemsi

Почему дискорд бот не реагирует на команду?

import asyncio
import random
import discord
from discord.ext import commands

intents = discord.Intents.all()

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

@client.event
async def on_ready():
    print('Бот уже попущенный')
w1 = [0,1,0,0,0,1] #(можешь еще добавить, сколько душе угодно(0, 2, 3, 4... - Не даст роль, 1 - даст роль))

@client.command()
async def chest(message):
    if message.channel != 903198062963490827:
        return
    if message.author == py.user: # (проверка на сообщение от бота(игнорируем))
        return
    w2 = random.choice(w1)
    if w2 == 1:
        guild = message.guild
        channel = message.channel
        user = message.author # (чисто для удобства упрощаем вид)
        await channel.send('ТЫ ПОПАЛ В ПОДВАЛ, ХА-ХА-ХА')
    if w2 == 0:
        await channel.send('нюхай')
        await asyncio.sleep(120)

client.run('')
  • Вопрос задан
  • 325 просмотров
Решения вопроса 1
SoreMix
@SoreMix Куратор тега Python
yellow
Непонятно, почему должно работать. Как минимум переменная py не определена.

message.channel является объектом класса discord.channel.TextChannel. Нельзя его сравнить с числом, такое сравнение всегда выдаст неравенство в ответе, что в данном случае является True, так что функция всегда будет прекращать своё выполнение на этом блоке if.

Если хотите сравнить id - то нужно сравнивать id.
if message.channel.id != 903198062963490827:
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
ayabondid
@ayabondid
начинающий питонист
@client.command(pass_context = True)
вот так декаратор должен выглядеть
Ответ написан
Ваш ответ на вопрос

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

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