【问题标题】:How to get a User object from a message in group at Telegram Bot如何从 Telegram Bot 的群组消息中获取用户对象
【发布时间】:2015-08-10 22:06:32
【问题描述】:

最近我正在研究一个用 python 编写的简单 Telegram 机器人(使用 python-telegram-bot library)。在这个机器人中,我可以使用以下命令获取最后一个消息对象:

bot.getUpdates()[-1].message

根据Telegram Doc,消息对象包含一些属性,例如message_id,from,date,chat,...from 属性返回一个用户对象,它是消息的发送者。但由于frompython keyword(在导入时使用),因此我们不能使用它会引发 SyntaxError。

作为一种替代方法,我们可以使用chat 属性,该属性在个人聊天中返回一个用户对象,在不包含的组中返回一个GroupChat 对象以及有关用户的信息。另外我找不到任何直接报告此错误的方法。

所以问题是有什么方法可以完成这项工作吗?或者任何替代解决方案?

【问题讨论】:

  • 您是否尝试过使用getattr()?它可以让你避免使用保留关键字。但是我还是不太确定,你自己开发了 JSON 到 Python 的对象代码吗?
  • @Anonymous 不,我没有让我尝试过,不,这只是一个没有任何数据库的简单机器人。
  • 我的意思是,他们提供的唯一 API 是 HTTP API,我认为没有官方的 Python 包装器。如果您开发了将 JSON 转换为 Python 对象的代码,则可以在解析数据时将 from 属性更改为 from_user 或任何名称。如果它在 Python 中不起作用,则无需遵守他们的约定。但我有一种不好的感觉,我误解了这个问题。
  • @Anonymous 正如我认为的那样,AttributeError: 'Message' object has no attribute 'from'.
  • 我不处理任何 JSON 文件,我只想做我解释过的事情。

标签: python telegram-bot python-telegram-bot


【解决方案1】:

由于已澄清您使用的是 库,因此解决方案很简单。库renamed 的作者将Python 不兼容的from 属性设置为from_user。所以就这样做吧:

user = bot.getUpdates()[-1].from_user

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-08-08
    • 2023-03-14
    • 1970-01-01
    • 2017-02-25
    • 1970-01-01
    • 2017-11-28
    • 2018-12-15
    • 1970-01-01
    相关资源
    最近更新 更多