Discord.py:协程从未等待过



似乎无法修复这个代码,我试图从它的邀请链接中获得不和谐服务器的名称。

import discord
from discord.ext import commands
intents = discord.Intents.default()
intents.message_content = True
client = discord.Client(intents=intents)
async def get_invite_name(link):
name = await client.fetch_invite(link).guild.name
return name
print(get_invite_name('https://discord.com/invite/veefriends'))

试着把await放在client.fetch_invite(link).guild.name的前面,但它不起作用。我不懂async。

尝试了@matthew-barlowe的建议,但它吐出了更多的错误-

File "~/DLG/sandbox.py", line 14, in <module>
print(asyncio.run(get_invite_name('https://discord.com/invite/veefriends')))
File "/usr/lib/python3.10/asyncio/runners.py", line 44, in run
return loop.run_until_complete(main)
File "/usr/lib/python3.10/asyncio/base_events.py", line 646, in run_until_complete
return future.result()
File "~/DLG/sandbox.py", line 12, in get_invite_name
return await invite.guild.name
AttributeError: 'coroutine' object has no attribute 'guild'
sys:1: RuntimeWarning: coroutine 'Client.fetch_invite' was never awaited

您还必须等待异步包装器函数get_invite_name。在asyncio.run(get_invite_name('https://discord.com/invite/veefriends'))中运行它将在非异步设置中处理该问题。您还需要导入asyncio

import discord
import asyncio
from discord.ext import commands
intents = discord.Intents.default()
intents.message_content = True
client = discord.Client(intents=intents)
async def get_invite_name(link):
response = await client.fetch_invite(link)
name = response.guild.name
return name
print(asyncio.run(get_invite_name('https://discord.com/invite/veefriends')))

如果你在另一个async函数中调用它,那么await get_invite_name('https://discord.com/invite/veefriends')就足够了

最新更新