【问题标题】:Discord Python Bot ScheduleDiscord Python 机器人时间表
【发布时间】:2019-05-10 08:04:32
【问题描述】:

我觉得我做错了什么。如果我尝试使用在控制台中打印消息,它确实可以工作,但如果我尝试向 discord 发送消息,我无法让它工作。

import discord
import asyncio
from discord.ext import commands
import schedule
import time

TOKEN = 'xxx'

client = commands.Bot(command_prefix = '.')

@client.event
async def on_ready():
    print('Bot Online.')

async def job():
    channel = client.get_channel('XXXX')
    messages = ('test')
    await client.send_message(channel, messages)

schedule.every(5).seconds.do(job)

while True:
    schedule.run_pending()
    time.sleep(1)

client.run(TOKEN)

我修改了代码,但仍然收到此消息:

RuntimeWarning:从未等待协程“作业” self._run_job(job)

【问题讨论】:

    标签: python python-3.x scheduled-tasks python-asyncio discord.py


    【解决方案1】:

    您需要在所有功能上使用async,而不仅仅是在准备就绪时使用。函数名也叫on_member_join

    @client.event
    async def on_member_join(member):
        await client.send_message(member, message)
    

    您必须 dm 成员而不向频道发送消息的原因是因为没有指定频道。

    假设您想将消息发送到您必须执行的特定频道:

    @client.event
    async def on_member_join(member):
        await client.send_message(client.get_channel('12324234183172'), message)
    

    将随机数替换为频道 ID。

    如果您想了解有关 discord.py 的更多信息,可以阅读文档或查看教程。 Discord.py Docs

    注意:确保在页面顶部包含import asyncio

    编辑: 另一个问题是你做了schedule.every(5).seconds.do(job)。将此行更改为:await schedule.every(5).seconds.do(job)

    【讨论】:

    • 我修改了代码,但仍然收到 RunTimeWarning
    猜你喜欢
    • 1970-01-01
    • 2021-07-20
    • 2021-07-17
    • 2019-01-12
    • 2019-08-10
    • 2021-07-24
    • 1970-01-01
    • 1970-01-01
    • 2018-07-24
    相关资源
    最近更新 更多