从未等待过运行时警告库鲁的messagable.send

时间:2020-10-03 05:22:19

标签: python discord.py coroutine

一些背景 在学习了一些python之后,我一直试图将discord bot作为我的第一个宠物项目。我的目标是从我一直在玩的在线游戏中检索API数据并将其粘贴到我的discord服务器上。我需要检索的数据是从discord命令中给出的。例如:!stats 2255880是其中2255880是游戏中玩家ID的命令。我几乎完成了代码,除了不断出现的地狱错误和google对我没有太大帮助

错误:

RuntimeWarning: coroutine 'Messageable.send' was never awaited
  message.channel.send(end_data )
RuntimeWarning: Enable tracemalloc to get the object allocation traceback
#to import modules
import discord
from discord.ext import commands
from discord.ext.commands import Bot
import requests
import json


#client for bot
client=discord.Client()

######## TORN API DATA #########


apikey='insert key here'


@client.event
async def on_message(message):

   if message.content.startswith('!stats'):
      def torn_script(player_ID):
         apiurl='https://api.torn.com/user/'+str(player_ID)+'?selections=personalstats&key='+apikey
         r=requests.get(apiurl)
         astext=r.text
         asdict=json.loads(astext)
         data=json.loads(requests.get(apiurl).text)['personalstats']
         print('attacks won: ',data['attackswon'])
         async def discord_display(end_data):
            await message.channel.send(end_data )
         discord_display(['finally the dumbass succeded.LOL']) 
   torn_script(message.content[6:])

1 个答案:

答案 0 :(得分:0)

由于discord_display是协程(async def discord_display()),因此您需要等待:

async def discord_display(end_data):
    await message.channel.send(end_data )
await discord_display(['finally the dumbass succeded.LOL']) 

PS:如果您导入了discord.Client,为什么仍然使用commands.BotCommands扩展方式更加实用和强大。