Дискорд бот не может отправить сообщение
Есть такой код:
class f_Ds:
#warious
prefix = None
client = commands.Bot(command_prefix=prefix,intents=(discord.Intents.all()))
command = []
#id
guild_id = -
support_id = -
commands_id = -
chat_id = -
#texts
ticket_text = None
def set_prefix(prefix):
f_Ds.prefix = prefix
async def send_message(msg,channel_id):
await f_Ds.client.get_channel(channel_id).send(msg)
def start(token):
f_Ds.client.run(token)
f_Ds.send_message("QQ",f_Ds.chat_id)
f_Ds.start("-")
Однако при вызове функции f_Ds.send_message()
ничего не происходит.
Как я могу починить свой код?
Ответы (1 шт):
Автор решения: AnnaBazueva
→ Ссылка
А чего Вы ожидали:
- используя асинхронный метод без
await
, - вне асинхронной функции
- и ещё до запуска бота!?
Пример как это должно выглядеть:
import discord
from discord.ext import commands
class f_Ds:
prefix = None
client = commands.Bot(command_prefix=prefix, intents=discord.Intents.all())
chat_id = None
@classmethod
def set_prefix(cls, prefix):
cls.prefix = prefix
cls.client = commands.Bot(command_prefix=cls.prefix, intents=discord.Intents.all())
@classmethod
async def send_message(cls, msg, channel_id):
channel = cls.client.get_channel(channel_id)
if channel is not None:
await channel.send(msg)
else:
print(f"Канал с ID {channel_id} не найден.")
@classmethod
async def on_ready(cls):
print(f'Бот {cls.client.user} запущен.')
await cls.send_message("QQ", cls.chat_id) # Отправляем сообщение после запуска
@classmethod
def start(cls, token):
cls.client.add_listener(cls.on_ready)
cls.client.run(token)
# Убедитесь, что chat_id и token инициализированы
f_Ds.chat_id = 123456789012345678
f_Ds.start("TOKEN")
Эта строчка f_Ds.send_message()
перенесена в метод on_ready
.