You need to enable JavaScript to run this app. discord.py开发Discord机器人后台循环任务报'tuple'对象无set_author属性错误
优惠活动
大模型
产品
解决方案
定价
更多

discord.py开发Discord机器人后台循环任务报'tuple'对象无set_author属性错误

核心报错触发原因

你遇到的AttributeError: 'tuple' object has no attribute 'set_author',是踩了Python隐式元组语法的坑:

  • 代码里给channel、embed赋值的两行,行尾多了个英文逗号。Python语法里,任何表达式后面只要跟逗号,就会自动把这个值封装成单元素元组,不会按预期把对象本身赋值给变量。
    也就是说当前代码里的embed根本不是discord.Embed实例,是一个装着Embed对象的元组——元组本身没有set_author方法,直接触发属性不存在的报错。
  • 代码里还埋了几个会导致后续运行失败的隐藏问题:
    • 多处字段取值的时候把变量response拼错成了respons,执行到这几行取值逻辑时会报变量未定义、字段不存在的错误
    • 堆栈里提到的str2是不存在的调用方法,说明本地实际运行的代码版本和贴出来的内容有差异:要么是对应行手滑把内置的str()写成了str2,要么是跑了未保存的旧草稿代码,需要核对bot.py对应行的实际内容
    • 现在写的url = 'API'是占位字符串,运行到aiohttp请求环节会因为URL格式非法报错
具体修复操作
  • 删掉channel = client.get_channel(809881992367702117), 行尾多余的逗号,让channel变量直接存储拿到的频道对象
  • 删掉embed = discord.Embed(...) 整块定义行尾的多余逗号,让embed变量直接存储Embed实例
  • 把所有拼写错误的respons修正为response,调整dailyTested、activeCase两处的取值逻辑
  • 把占位的'API'替换成真实可访问的疫情数据接口地址
  • 核对embed.set_author() 对应行的代码,确保调用的是内置str()做类型转换,不存在手滑写错的str2

内容的提问来源于stack exchange,提问作者DiabloStudio

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.11.04 11:36:03