从 python-telegram-bot 中的组获取​​成员信息

get member information from group in python-telegram-bot

我正在使用 python 编写部分电报机器人编码:

def ok(bot,update):
    print update.message


handler = MessageHandler(Filters.all,ok)
updater.dispatcher.add_handler(handler)

updater.start_polling()
updater.idle()

当我直接向我的机器人发送私信时,我可以打印成员用户名:

print update.message["chat"]["username"]

结果:

打印update.message

当直接向机器人发送消息时:

{'delete_chat_photo': False, 'new_chat_photo': [], 'from': {'username': u'un_detectable', 'first_name': u'Sina \U0001f3a9', 'is_bot': False, 'id': 207541477, 'language_code': u'en-US'}, 'text': u'salaaam', 'entities': [], 'channel_chat_created': False, 'new_chat_members': [], 'supergroup_chat_created': False, 'chat': {'username': u'un_detectable', 'first_name': u'Sina \U0001f3a9', 'type': u'private', 'id': 207541477}, 'photo': [], 'date': 1505902164, 'group_chat_created': False, 'message_id': 297, 'new_chat_member': None}

并且在聊天字段中用户名存在并且正如我所说可以打印

但是当我在群组中收到私信时(我的机器人权限是管理员)我无法访问成员用户名

结果:

print update.message

在聊天群中发送消息时:

{'delete_chat_photo': False, 'new_chat_photo': [], 'from': {'username': u'un_detectable', 'first_name': u'Sina \U0001f3a9', 'is_bot': False, 'id': 207541477, 'language_code': u'en-US'}, 'text': u'salaaaam', 'entities': [], 'channel_chat_created': False, 'new_chat_members': [], 'supergroup_chat_created': False, 'chat': {'type': u'supergroup', 'id': -1001139540291L, 'title': u'test'}, 'photo': [], 'date': 1505902183, 'group_chat_created': False, 'message_id': 201, 'new_chat_member': None}

并且在聊天字段中用户名不存在 我想当其中一个 memebrs 在组中写消息时,将我的 bot 他消息 + 用户名保存在数据库中 但我无法访问组成员的用户名! 有人可以帮助我吗?

您的群需要publiclink,如@AwesomeTeleBot,可由创建者在编辑群中配置。

在私信里,chat等于user,所以可以看到chatusername,还有from_user的字段.

在一个群中,chat表示该群,from_user表示发出消息的用户。如果你想记录用户的用户名,你应该在 update.message.from_user.username.

中找到它们