无法用列表验证Twitch机器人Message.author是否为Moderator,求助
问题分析与解决步骤
代码中的核心错误
- 错误引用类属性而非当前消息的作者:你直接调用
twitchio.Message.author是在引用Message类的属性,并非触发命令的实际用户对象,应该使用上下文ctx里的ctx.author来获取当前执行命令的用户。 - 错误的比较逻辑:
Modo是字符串列表,而author是Twitch用户对象,不能直接将对象与列表做相等判断,需要提取用户的用户名(name属性),再判断是否在列表中。
修正后的代码
@commands.command() async def off(self, ctx: commands.Context): Modo = ["Lilkoroo"] print(Modo) # 提取当前用户的用户名,判断是否在管理员列表中 if ctx.author.name in Modo: print("a") # 此处可添加管理员专属的执行逻辑
额外优化建议
- 若管理员列表需要复用,建议将
Modo定义为类属性或全局变量,避免每次调用命令都重新创建列表。 - Twitch官方提供了更严谨的权限验证方式,可直接通过用户对象的
is_mod属性判断是否为频道管理员,无需手动维护列表:
@commands.command() async def off(self, ctx: commands.Context): # 直接验证当前用户是否为频道 moderator if ctx.author.is_mod: print("该用户是管理员") # 执行后续逻辑
内容的提问来源于stack exchange,提问作者Lilkoro
相关产品推荐
相关产品推荐

