import discord
from discord import Intents, Message, Client
from discord.ext import commands
import os
from dotenv import load_dotenv
from pathlib import Path
from random import randint
#launchingbetween
dotenv_path = Path('C:/Users/USER/OneDrive/phyton/discordbot/venv/bot/.env')
load_dotenv(dotenv_path=dotenv_path)
TOKEN = os.getenv('DISCORD_TOKEN')
intents = discord.Intents.default()
intents.members = True
intents.message_content = True
client = commands.Bot(command_prefix=',', intents=intents)
@client.event
async def on_ready():
print("the bot is here")
client.run(token=TOKEN)
#launchingbetween
@client.event
async def on_message(self, message=discord.Message):
if message.content == "hi":
await message.channel.send("hello")
else:
return
Все, кроме последних 6 строк, работает. Сообщение появляется в терминале, бот становится онлайн. Однако и бот не отвечает на сообщения; ошибок не выдает, просто не работает. И дело не в разрешениях или чем-то еще; бот раньше работал на том же сервере.
да, у него есть все необходимые разрешения
В функции on_message() допущена небольшая ошибка. Параметр message
не должен быть равен discord.Message
.
Вместо этого строка должна выглядеть следующим образом:
async def on_message(message):
ты прав, но почему-то все равно не работает
Вам также следует удалить параметр self
, поскольку вы не используете винтики. Единственный параметр, который должен там быть, это message
.
все еще не работает, но я думаю, вы должны знать, что слова «канал контента» и «отправка» не определены и не связаны ни с чем, они окрашены в белый цвет.
on_message
должен быть объявлен перед client.run
.self
также необходимо удалить из on_message
, это имело бы смысл, если бы вы использовали шестеренки (возможно, вы захотите взглянуть на них).on_message(message: discord.Message)
с :
, а не с =
.Правильный код:
@client.event
async def on_ready():
print("the bot is here")
@client.event
async def on_message(message: discord.Message):
if message.content == "hi":
await message.channel.send("hello")
else:
return
client.run(token=TOKEN)
вы разрешили боту читать сообщения? Является ли чтение сообщений частью намерений по умолчанию?