discord.py无需频道ID向新建文本频道发送消息的实现方法问询
代码修正方案
你完全不需要遍历服务器频道查找新建的频道,discord.py中create_text_channel方法执行完成后会直接返回刚创建的文本频道对象,直接复用这个对象发送消息即可。
修正后的代码如下:
async def avengers(ctx): guild = ctx.guild # 原频道发第一条embed消息 embed = discord.Embed(title='¿Listos?', color=discord.Color.purple()) await ctx.send(embed=embed) # 创建频道并用变量接收返回的频道对象 new_channel = await guild.create_text_channel('『😈』chat-anticristiano') # 直接给新建频道发第二条消息 await new_channel.send('Ready!')
原代码问题说明
- 原有代码调用
create_text_channel后没有接收返回值,后续额外遍历频道查找属于多余操作 - 原有代码的遍历逻辑存在缩进错误、重复循环的问题,甚至将
channel变量赋值为字符串,完全无法调用发送消息的方法 - 原有代码最后调用的是
ctx.channel.send,一直是给触发命令的原频道发消息,不可能发到新频道
注意事项
需要确保你的机器人拥有如下权限,否则会执行失败:
- 管理频道(用于创建新文本频道)
- 发送消息(同时拥有原频道和新建频道的发消息权限)
内容的提问来源于stack exchange,提问作者iMaGiikz
相关产品推荐
相关产品推荐

