Как отправить сообщение вне команды в дискорд боте?(python)
Вот положим есть такой код:
from discord.ext import commands
settings = {
# ...
}
bot = commands.Bot(command_prefix = settings['prefix'])
@bot.command()
async def hello(ctx):
await ctx.send('Hello')
bot.run(settings['token'])
Как вне команды послать сообщение?
Ответы (1 шт):
Автор решения: denisnumb
→ Ссылка
Импортируем
asyncioСоздаем асинхронную функцию для отправки сообщения. Например -
send_message()Вызываем функцию через
asyncio, передавая нужные аргументы:asyncio.run_coroutine_threadsafe(send_message(762470056040330836, 'test'), bot.loop)
В данном случае 760470076070690836 - id текстового канала, а 'test' - сообщение.
Используя эту строку можно в любой момент вызвать функцию для отправки сообщения.
Пример кода:
import discord
from discord.ext import commands
import asyncio
bot = commands.Bot(command_prefix = settings['prefix'])
async def send_message(channel_id: int, msg):
channel = bot.get_channel(channel_id)
await channel.send(msg)
@bot.event
async def on_ready():
asyncio.run_coroutine_threadsafe(send_message(760470076070690836, 'test'), bot.loop)
bot.run(settings['token'])
Как только бот будет готов к работе (функция on_ready()), в канал будет отправлено сообщение 'test'