You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Telethon提取消息数字报错:AttributeError问题求助

解决Telethon提取消息中数字的AttributeError问题

错误原因很明确:你调用了m.split(),但m是Telethon的Message实例,不是字符串类型,split()是字符串的方法,所以会抛出AttributeError。此外你原来的判断条件if m.text == ".set"也无法匹配.set 14这类带参数的消息,需要一起修正。

修正后的代码

@client.on(telethon.events.NewMessage(outgoing=True))
async def outgoing(m):
    global ss
    # 先判断消息文本是否存在,且以".set "开头(避免匹配单独的".set")
    if m.text and m.text.startswith(".set "):
        # 拆分消息文本为列表,比如".set 14"会拆成[".set", "14"]
        parts = m.text.split()
        # 提取列表中的数字元素并转成int
        ss = [int(s) for s in parts if s.isdigit()]
        # 如果你确定只会有一个数字,也可以直接取第二个元素(更直接)
        # if len(parts) >=2 and parts[1].isdigit():
        #     ss = int(parts[1])

关键修正点

  • 用m.text.split()替代m.split():必须通过Message对象的text属性获取消息字符串后,再执行拆分操作。
  • 调整判断条件:使用startswith(".set ")来匹配带参数的指令,避免漏掉后面的数字;同时先判断m.text不为空,防止空消息引发错误。
  • 可选优化:如果业务逻辑中.set后只会跟一个数字,可以直接取拆分后的第二个元素(parts[1])并转成int,比列表推导式更简洁,还能避免多个数字的情况。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 00:25:28