Discord Python Bot Расписание - PullRequest
       24

Discord Python Bot Расписание

0 голосов
/ 09 декабря 2018

Я думаю, что делаю что-то не так.Если я пытаюсь использовать для печати сообщения в консоли, это работает, но если я пытаюсь отправить сообщение на дискорд, я не могу заставить его работать.

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: сопрограмма 'job' никогда не ожидалась self._run_job (job)

1 Ответ

0 голосов
/ 09 декабря 2018

Вам необходимо использовать 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)

Заменить случайное число на идентификатор канала.

Если вы хотите узнать больше о Discord.Пи, вы можете прочитать документы или просмотреть учебник. Discord.py Docs

Примечание. Обязательно добавьте import asyncio вверху страницы.

РЕДАКТИРОВАТЬ. Другая проблема заключается в том, что вы сделали schedule.every(5).seconds.do(job).Измените эту строку на: await schedule.every(5).seconds.do(job)

...