从未等待协程 discord.py
Posted
技术标签:
【中文标题】从未等待协程 discord.py【英文标题】:coroutine was never awaited discord.py 【发布时间】:2021-11-08 09:56:10 【问题描述】:嗨,我的函数 check_thunes()
出现问题,它引发了一个错误,协程从未等待
check_thunes()
用于检查玩家是否输入了正确的值,如果没有则发送消息通知玩家。我需要稍后将其应用于其他游戏。我使功能异步能够发送消息。
这是我的代码:
import discord
import time
from random import randrange,choices
import os
from replit import db
from keep_alive import keep_alive
token = os.environ['token']
client = discord.Client()
@client.event
async def on_ready():
print("le bot est prêt")
@client.event
async def check_thunes(mise,joueur):
if joueur in db.keys(): #trouve la thune du joueur dans la db
thune=int(db[joueur])
else:
db[joueur]="1000"
thune=int(db[joueur])
reste=str(thune-mise)
db[joueur]=reste
if mise<=0:
await message.channel.send("Vous ne pouvez pas miser 0 crédit")
return erreur
if thune<=0:
await message.channel.send("Vous n'avez plus d'thune, mais voici un coup de pouce de 1k")
db[joueur]=str(1000)
return
if mise>thune:
await message.channel.send("Vous n'avez pas assez d'thune")
return
reste=str(thune-mise)
db[joueur]=reste
return reste,thune
@client.event
async def on_message(message):
msg=message.content
if msg.startswith("!roulette") :
#le message doir se présenter sous la forme
# !roulette nb(0,50) mise(1,thune)
gain=0
thune=0
reste=0
nombre=""
mise=""
joueur=str(message.author.name)
nb_g=int(randrange(51))
erreur=0
for i in range(10, 12): #trouve le nombre choisit
nombre+=msg[i]
nombre=int(nombre)
for i in range(12,len(msg)): #trouve la mise
mise+=msg[i]
mise=int(mise)
if joueur in db.keys(): #trouve la thune du joueur dans la db
thune=int(db[joueur])
else:
db[joueur]="1000"
thune=int(db[joueur])
reste=str(thune-mise)
db[joueur]=reste
#controleur des valeurs choisies
if nombre>50:
await message.channel.send("Le nombre choisit doit être entre 0 et 50")
return
check_thunes(mise, joueur)
#calcul des gains
if nombre==nb_g : #regza le premier gagnant du bot
gain=mise*2
elif (nombre%2==0 and nb_g%2==0) or (nombre%2==1 and nb_g%2==1 ) :
gain=round(mise*1.25)
else :
gain=0
if int(reste)+int(gain)>=0:
db[joueur]=str(int(reste)+int(gain))
elif int(reste)+int(gain)<0:
db[joueur]=str(0)
await message.channel.send("Vous n'avez plus d'thune")
return
if gain-mise>=0 :
await message.channel.send(str("Vous aviez choisit "+str(nombre)+" et la roulette a donnée "+str(nb_g)))
await message.channel.send(str("Vous avez gagné "+str(gain-mise)))
await message.channel.send(str("Il vous reste "+str(int(reste)+gain)))
return
else:
await message.channel.send(str("Vous aviez choisit "+str(nombre)+" et la roulette a donnée "+str(nb_g)))
await message.channel.send(str("Vous avez perdu "+str(-(gain-mise))))
await message.channel.send(str("Il vous reste "+str(int(reste)+gain)))
return
你能帮帮我吗
【问题讨论】:
这个错误是不言自明的,它是一个协程,你应该await
它...
对不起,我是异步函数的新手,所以我不知道如何解决这个问题
简单——只需在调用之前添加await
关键字:await check_thunes(mise, joueur)
【参考方案1】:
您将函数定义为coroutine
,如下所示:
async def myFunction():
...
所以,如果你想调用它,你必须await
它,像这样:
await myFunction()
在您的情况下,您只需在调用check_thunes
之前添加await
,如建议的Łukasz Kwieciński:
await check_thunes(mise, joueur)
【讨论】:
以上是关于从未等待协程 discord.py的主要内容,如果未能解决你的问题,请参考以下文章
RuntimeWarning:协程“Messageable.send”从未等待 python.py
使用 python 线程时出现协程错误,RuntimeWarning: coroutine 'time_messege' 从未等待