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
相关产品推荐
相关产品推荐

