discord.py , RuntimeWarning: включить tracemalloc для получения обратной трассировки выделения объекта при отправке сообщения

#python #discord #discord.py

#python #Discord #discord.py

Вопрос:

Хорошо, итак, у меня такая проблема: я написал код, который предназначен для отправки сообщения на сервер discord каждые (пока только для тестирования) 10 секунд, и когда я пытаюсь выполнить команду на discord:

 import os
import sched
import time

from discord.ext import commands
from dotenv import load_dotenv

import Library

load_dotenv()
TOKEN = os.getenv('discordToken')

bot = commands.Bot(command_prefix='Question')
lastEmbed = None
s = sched.scheduler(time.time, time.sleep)


async def do_something(sc):
    channel = bot.get_channel(416238248445214720)
    await channel.send("And what?")
    s.enter(10, 1, do_something, (sc,))


@bot.event
async def on_ready():
    print(f'{bot.user.name} has connected to Discord!')
    s.enter(10, 1, do_something, (s,))
    s.run()
  

Каждый раз, когда я получаю такую ошибку:

 C:Program FilesWindowsAppsPythonSoftwareFoundation.Python.3.8_3.8.1776.0_x64__qbz5n2kfra8p0libsched.py:151: RuntimeWarning: coroutine 'do_something' was never awaited
  action(*argument, **kwargs)
RuntimeWarning: Enable tracemalloc to get the object allocation traceback
  

Комментарии:

1. Я полагаю, что ваша проблема связана с sched и асинхронностью кода бота discord.

2. Пожалуйста, добавьте полную трассировку стека

Ответ №1:

Хорошо, спасибо @FrozenAra и @derw за вашу помощь, хотя я нашел совершенно другой способ решения проблемы, который я использовал в discord.Клиентская библиотека и задачи, так что теперь это выглядит так:

 @tasks.loop(minutes=30)
async def reminder():
    channel = client.get_channel(692724253237313576)
    await channel.send("So what?")
    await channel.send(preembed)
  

И все работает просто отлично.
Спасибо за вашу помощь, ребята 🙂