Wavelink创建Node报错:AttributeError: NodePool无create_node属性
解决Wavelink中
AttributeError: type object 'NodePool' has no attribute 'create_node'错误 错误原因
你使用的Wavelink版本为v4及以上,但代码采用了v3版本的API写法。Wavelink v4对NodePool的API做了重大调整,移除了create_node方法,改用add_node方法来添加节点。
解决方案
方案1:适配Wavelink v4版本修改代码
修改你的connect_nodes函数和相关代码,适配v4的API:
import discord from discord.ext import commands import wavelink bot = commands.Bot(command_prefix="/", intents=discord.Intents.all()) @bot.event async def on_ready(): bot.loop.create_task(connect_nodes()) async def connect_nodes(): await bot.wait_until_ready() # 改用add_node方法,无需传入bot参数 await wavelink.NodePool.add_node( host='0.0.0.0', port=2333, password="youshallnotpass", identifier="main" # 可选,给节点设置标识 ) @bot.event async def on_wavelink_node_ready(node: wavelink.Node): # 修正拼写错误:nide → node,移除不必要的转义符 print(f'node: <{node.identifier}> is ready.') bot.run('token')
方案2:降级到Wavelink v3版本
如果你想继续使用原有代码,可以通过pip降级到v3版本:
pip install wavelink==3.0.0
注意:降级后需要确保你的discord.py版本与Wavelink v3兼容(推荐discord.py v2.0+)。
额外检查点
- 确认你的Lavalink配置文件
application.yml中的端口、密码与代码中的参数完全匹配,目前你的配置和代码是一致的,这部分没问题。 - Lavalink服务已正常启动(你已确认日志显示
Lavalink is ready to accept connections),这部分也没问题。 - 修正代码中
on_wavelink_node_ready事件里的拼写错误:nide改为node,避免输出错误信息。
内容的提问来源于stack exchange,提问作者Veluar
相关产品推荐
相关产品推荐

