在特定时间为discord bot安排特定功能

问题描述 投票:0回答:1

所以我想制作一个在特定时间(例如:22:30)执行某些功能的不和谐机器人,虽然不是 22:30,但我想让机器人像往常一样工作,接收消息,发送等等。

import someFile
import discord
import responses
from discord.ext import commands

def run_discord_bot():
    TOKEN = ''
    intents = discord.Intents.all()
    client = discord.Client(command_prefix="-", intents = intents)
    if time == specificTime:
        someFile.someFunction() #run this file at specific time
    else: #run bot as usual
        @client.event
        async def on_ready():
            print(f'{client.user} is now running!')

        @client.event
        async def on_message(message):
            if message.author == client.user:
                return
            username = str(message.author)
            user_message = str(message.content)
            channel = str(message.channel)
            print(f'{username} said: {user_message} ({channel})')
            await send_message(message, user_message, is_private=True)
    client.run(TOKEN)

有什么办法可以做到吗?我在谷歌上确实找不到任何解决方案......

python discord
1个回答
0
投票
import someFile
import discord
from discord.ext import commands
from apscheduler.schedulers.asyncio import AsyncIOScheduler
import asyncio

def run_discord_bot():
    TOKEN = ''
    intents = discord.Intents.all()
    client = discord.Client(command_prefix="-", intents=intents)
    scheduler = AsyncIOScheduler()

    async def job():
        #Function...

    # Schedule the job to run at 22:30
    scheduler.add_job(job, 'cron', hour=22, minute=30)

    @client.event
    async def on_ready():
        print(f'{client.user} is now running!')

    @client.event
    async def on_message(message):
        if message.author == client.user:
            return
        username = str(message.author)
        user_message = str(message.content)
        channel = str(message.channel)
        print(f'{username} said: {user_message} ({channel})')
        await send_message(message, user_message, is_private=True)

    client.run(TOKEN)

    try:
        scheduler.start()
        asyncio.get_event_loop().run_forever()
    except (KeyboardInterrupt, SystemExit):
        scheduler.shutdown()
© www.soinside.com 2019 - 2024. All rights reserved.