Python BaseClient.handshake从来都不是人们期待的
我正在尝试制作一个on_ready事件,询问我是否希望在我的客户机上显示丰富的内容,并键入“n”或“否”起作用,但键入“y”或“是”会告诉我错误。我不确定是否有什么我需要等待,因为我是一个新的丰富的存在Python BaseClient.handshake从来都不是人们期待的,python,discord,discord.py,Python,Discord,Discord.py,我正在尝试制作一个on_ready事件,询问我是否希望在我的客户机上显示丰富的内容,并键入“n”或“否”起作用,但键入“y”或“是”会告诉我错误。我不确定是否有什么我需要等待,因为我是一个新的丰富的存在 Ignoring exception in on_ready Traceback (most recent call last): File "C:\Users\selma\AppData\Local\Programs\Python\Python39\lib\site-packag
Ignoring exception in on_ready
Traceback (most recent call last):
File "C:\Users\selma\AppData\Local\Programs\Python\Python39\lib\site-packages\discord\client.py", line 343, in _run_event
await coro(*args, **kwargs)
File "c:\Users\selma\OneDrive\Desktop\Phoenix Bot\main.py", line 1651, in on_ready
await rpc.connect()
File "C:\Users\selma\AppData\Local\Programs\Python\Python39\lib\site-packages\pypresence\presence.py", line 43,
in connect
self.loop.run_until_complete(self.handshake())
File "C:\Users\selma\AppData\Local\Programs\Python\Python39\lib\asyncio\base_events.py", line 618, in run_until_complete
self._check_running()
File "C:\Users\selma\AppData\Local\Programs\Python\Python39\lib\asyncio\base_events.py", line 578, in _check_running
raise RuntimeError('This event loop is already running')
RuntimeError: This event loop is already running
C:\Users\selma\AppData\Local\Programs\Python\Python39\lib\site-packages\discord\client.py:350: RuntimeWarning: coroutine 'BaseClient.handshake' was never awaited
pass
RuntimeWarning: Enable tracemalloc to get the object allocation traceback
@client.event
_ready()上的异步定义:
打印(f“{client.user.name}已准备就绪。”)
打印(f“开始于:{datetime.datetime.utcnow()}”)
打印(f“公会:{len(client.Guilds)}”)
打印(“您想要丰富的状态吗?(y/n)”)
e=输入(“”)
如果e.lower()=“y”:
rpc=存在(“804897816434180096”)
等待rpc.connect()
等待rpc.update(
details=“邀请并在下面投票”,
大型图片=“凤凰”,
大型\u text=“邀请凤凰机器人”,
按钮=[
{“标签”:“邀请凤凰机器人”,“url”:https://discord.com/oauth2/authorize?client_id=804897816434180096&scope=bot%20applications.commands&permissions=8},{“标签”:“投票给凤凰机器人”,“url”:https://top.gg/bot/804897816434180096/vote" }
]
)
elif e.lower()=“是”:
rpc=存在(“804897816434180096”)
等待rpc.connect()
等待rpc.update(
details=“邀请并在下面投票”,
大型图片=“凤凰”,
大型\u text=“邀请凤凰机器人”,
按钮=[
{“标签”:“邀请凤凰机器人”,“url”:https://discord.com/oauth2/authorize?client_id=804897816434180096&scope=bot%20applications.commands&permissions=8},{“标签”:“投票给凤凰机器人”,“url”:https://top.gg/bot/804897816434180096/vote" }
]
)
elif e.lower()=“n”:
返回打印(“丰富显示关闭”)
elif e.lower()=“否”:
返回打印(“丰富显示关闭”)
我没有任何方法进行测试,但您可以尝试在调用Presence()
时指定循环
参数。像这样:
rpc=Presence(“804897816434180096”,loop=client.loop)
此外,请使用或
语句,而不是重复代码
而不是:
elif e.lower() == "n":
return print("Rich Presence is off")
elif e.lower() == "no":
return print("Rich Presence is off")
这样做:
elif e.lower() == "n" or e.lower() == "no":
return print("Rich Presence is off")
快速查看文档就可以解决此问题,
Presence().connect()
不是一个协同程序,即不需要等待
rpc=Presence(“804897816434180096”)
rpc.connect()
rpc.update(**kwargs)
能否添加到您正在使用的RPC模块的链接?请不要重复代码(在“y&yes分支”中,与“n&no”相同)。当我尝试这样做时,它给出了相同的错误。我还需要添加其他内容吗?请尝试
loop=asyncio.new\u event\u loop()
,而不是loop=client.loop
。如果查看错误,这不是问题所在。等待一个不可等待的结果会产生一个不同的错误。我试过了,但得到了同样的错误,我做了一个新的方法。