Почему мой дискорд бот не работает на серверах, только в личных сообщениях?

Я сделал дискорд бота на питоне, когда запускаю его из пайчарма всё нормально, полностью работает, но когда бот активен с heroku, бот на сервере не отвечает. И именно на серверах, в личные сообщения бот отзывается, но на серверах игнорирует команды. Я пробовал делать и через @client.event, и через @client.command(), ничего не работает. Создавал новые сервера, удалял со старых, проверял его роли, пересоздавал приглашения. Всё не работает именно когда бот запущен через хероку.

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

client = discord.Client()
client = commands.Bot(command_prefix="/")
token = "My Token" # Токен
now = datetime.datetime.now()
newYear = datetime.datetime(now.year + 1, 1, 1, 0, 0)
counting = True

@client.event
async def on_ready():
    print("Bot is ready")

@client.event
async def on_message(message):
    if message.author == client.user:
        return

    if message.content.startswith('/lolKekHype'):
        kek_list = ['Оооо, я вижу ты тоже в теме, я тоже шарю!!1! Всем #, всем тик ток, я в теме!!!!!!1!!1!!11',
                    'Фу, ты кринж, такими командами пользоваться, Osu!ждаю',
                    'Лол лмао, реально чееееееел, давай круто позависаем на этих выхах)))))',
                    'Не вижу нечего смешного, это не кек',
                    'Ну тут всё как бы норм, но не Hype же, кто так вообще пишет? проверься', 'фу, токс',
                    'о, а знаешь такого ютубера: Диму Масленикова? Такой, не популярный канал. Вот ссылка: https://www.youtube.com/watch?v=c5tY3F8ADGA',
                    'хочешь бесплатных гемов бравл старс? перехади по ссылке: https://brawlgems.com/generator/.',
                    'Выбран рандомный хит Шадоу рейза!!! Слушать:<https://www.youtube.com/watch?v=a3Z7zEc7AXQ>',
                    'Выбран рандомный хит Шадоу рейза!!! Слушать:<https://www.youtube.com/watch?v=qRU2aoiSLlg>',
                    'Выбран рандомный хит Шадоу рейза!!! Слушать:<https://www.youtube.com/watch?v=a3Z7zEc7AXQ>',
                    'Выбран рандомный хит Шадоу рейза!!! Слушать:<https://www.youtube.com/watch?v=UxM5UgpXYM4>']
        await message.channel.send(random.choice(kek_list))

    if message.content.startswith('/randomTopSong'):
        song_list = ['Слушать: <https://youtu.be/9Q7o07WfQj8>',
                     'Слушать: <https://youtu.be/ANlrXX8A1gY>',
                     'Слушать: <https://youtu.be/DAgEu_A0zHk>',
                     'Слушать: <https://youtu.be/mO9iWE499A0>',
                     'Слушать: <https://youtu.be/l_B9-9QVw2M>',
                     'Слушать: <https://youtu.be/89yDiQ8WkNg>']
        await message.channel.send(embed=discord.Embed(title='Выбран рандомный хит Шадоу рейза!!!', description=random.choice(song_list), colour=0xffcc00), delete_after=60)

    if message.content.startswith('/currentTime'):
        dt_now = datetime.datetime.now()
        if dt_now.day >= 10 and dt_now.month >= 10:
            await message.channel.send(f"{dt_now.day}.{dt_now.month}.{dt_now.year} Сейчас {dt_now.hour + 3} часов {dt_now.minute} минут {dt_now.second} секунд")
        if dt_now.day < 10 and dt_now.month >= 10:
            await message.channel.send(f"0{dt_now.day}.{dt_now.month}.{dt_now.year} Сейчас {dt_now.hour + 3} часов {dt_now.minute} минут {dt_now.second} секунд")
        if dt_now.day >= 10 and dt_now.month < 10:
            await message.channel.send(f"{dt_now.day}.0{dt_now.month}.{dt_now.year} Сейчас {dt_now.hour + 3} часов {dt_now.minute} минут {dt_now.second} секунд")
        if dt_now.day < 10 and dt_now.month < 10:
            await message.channel.send(f"0{dt_now.day}.0{dt_now.month}.{dt_now.year} Сейчас {dt_now.hour + 3} часов {dt_now.minute} минут {dt_now.second} секунд")

    if message.content.startswith('/startCounting'):
        counting = True
        while counting == True:
            now = datetime.datetime.now()
            delta = newYear - now
            await message.channel.send(f"До Нового Года осталось {int(delta.total_seconds() / 60 // 60)} часов")
            print(now)
            print(newYear)
            print(delta)
            await asyncio.sleep(3600)

    if message.content.startswith('/stopCounting'):
        counting = False
        await message.channel.send("ok")

    if message.content.startswith('/info'):
        await message.channel.send("Discord python bot v1.2 \n"
                                   "Last Updates: Добавлена комманда /help")

    if message.content.startswith('/help'):
        await message.channel.send("/help - помощь по командам \n"
                                   "/info - информация о боте \n"
                                   "/lolKekHype - похайпить \n"
                                   "/currentTime - вывести текущее время \n"
                                   "/startCounting - начать считывать часы до нового года с момента отправки команды ||пишите в ровное время, типа 12:00, 14:00 и т д|| \n"
                                   "/stopCounting - перестать считывать часы до нового года \n"
                                   "/randomTopSong - получить классную песню \n"
                                   "/lolKekHype - немножко похайпить \n")
    await client.process_commands(message)

@client.command()
async def test(ctx):
    await ctx.send("тест пройден")
client.run(token)```

Ответы (3 шт):

Автор решения: sq1blank

client = discord.Client()

Для чего вам эта строчка?

Советую прописывать все команды таким образом, а не через событие сообщения

client = commands.Bot(command_prefix = '/')
@client.command()
async def test(ctx)
    if ctx.author.bot:
        return
    await ctx.send("TEST COMMAND")

Так-же не понятно для чего вам это условие

if message.author == client.user:
   return

Здесь у вас пользователь, отправивший сообщение, сравнивается с клиентом бота для чего? Используйте ctx.author.bot (bool) чтобы отсечь сообщения ботов, пример написал в листинге выше.

Так-же, вы обращаетесь к библиотеке discord'a, но отсутствует import discord Я добавил импорт и удалил ненужное условие, о котором писал выше, и строку client = discord.Client(). Такой код у меня работает нормально. Результат команд

→ Ссылка
Автор решения: UnderFleX

Проблема решена. Я деплоил бота по гайду Tech With Tim, в файле requirements.txt он говорил написать вот эту строку: 'git+https://github.com/Rapptz/discord.py', убрав её всё заработало.

→ Ссылка
Автор решения: alex 55

этот пример бота, уже не актуален, кое что поменялось, свежий рабочий вариант есть здесь: https://discordpy.readthedocs.io/en/stable/quickstart.html

у меня вышел такой минимальный вариант:

import discord
from discord.ext import commands

intents = discord.Intents.default()
intents.messages = True
intents.message_content = True
client = discord.Client(intents=intents)
token = "" # Токен

@client.event
async def on_ready():
    print("Bot is ready")

@client.event
async def on_message(message):
    if message.author == client.user:
        return

    if message.content.startswith('/help'):
        await message.channel.send("/help - помощь по командам \n"
                                   "/info - информация о боте \n")

client.run(token)
→ Ссылка