我正在尝试制作一个将预定消息发送到特定文本通道的机器人。 例如,在我生日那天说“生日快乐”,或者每天早晨说“早安”。 该机器人似乎无法正常工作,因为我的文字频道中没有任何内容。
import discord,random,asyncio,os
from datetime import datetime
from discord.ext import commands
token = '#mytokenhere'
bot=commands.Bot(command_prefix='!')
send_time='01:41' #time is in 24hr format
message_channel_id='0000000000000' #channel ID to send images to
@bot.event
async def on_ready():
print(bot.user.name)
print(bot.user.id)
async def time_check():
await bot.wait_until_ready()
message_channel=bot.get_channel(message_channel_id)
while not bot.is_closed:
now=datetime.strftime(datetime.now(),'%H:%M')
if now.hour() == 1 and now.minute() == 52:
message= 'a'
await message_channel.send(message)
time=90
else:
time=1
await asyncio.sleep(time)
bot.loop.create_task(time_check())
bot.run('token')
答案 0 :(得分:2)
在这里,您将使用tasks
extension
from discord.ext import commands, tasks
bot = commands.Bot("!")
target_channel_id = 1234
@tasks.loop(hours=24)
async def called_once_a_day():
message_channel = bot.get_channel(target_channel_id)
print(f"Got channel {message_channel}")
await message_channel.send("Your message")
@called_once_a_day.before_loop
async def before():
await bot.wait_until_ready()
print("Finished waiting")
called_once_a_day.start()
bot.run("token")
答案 1 :(得分:0)
您也可以尝试使用aiocron。
pip安装aiocron
https://github.com/gawel/aiocron
在bot.run(TOKEN)之前的机器人代码中添加以下内容
import aiocron
CHANNEL_ID=1234
@aiocron.crontab('0 * * * *')
async def cornjob1():
channel = bot.get_channel(CHANNEL_ID)
await channel.send('Hour Cron Test')