当前位置: 首页 > 知识库问答 >
问题:

Telegram bot webhook不接收新的聊天成员用户名

竺捷
2023-03-14

当新用户加入机器人所在的组时,我使用Telegram机器人webhook接收Update对象。我希望收到更多关于用户的信息,但我得到的只是:

"new_chat_members": [
    {
        "id": xxxxxxxxx,
        "is_bot": false,
        "first_name": "xxxxx"
    }
]

我知道我可以使用getFullUser APIendpoint,但是我不希望提出额外的请求。有没有办法将用户名包含到接收到的数据中?

共有1个答案

邓德惠
2023-03-14

如果您< code>bot.send_message(cid,str(m))您将获得该消息的所有信息:

{
    'left_chat_member': None,
    'migrate_from_chat_id': None,
    'content_type': 'new_chat_members',
    'date': '1533552871',
    'voice': None,
    'migrate_to_chat_id': None,
    'group_chat_created': None,
    'location': None,
    'sticker': None,
    'new_chat_photo': None,
    'forward_from': None,
    'channel_chat_created': None,
    'video': None,
    'pinned_message': None,
    'supergroup_chat_created': None,
    'chat': {
        'id': idGroup,
        'title': 'groupTitle',
        'first_name': None,
        'last_name': None,
        'username': None,
        'all_members_are_administrators': None,
        'type': 'supergroup'
    },
    'audio': None,
    'reply_to_message': None,
    'caption': None,
    'contact': None,
    'document': None,
    'entities': None,
    'message_id': '688',
    'photo': None,
    'new_chat_title': None,
    'successful_payment': None,
    'forward_from_chat': None,
    'venue': None,
    'forward_date': None,
    'invoice': None,
    'text': None,
    'edit_date': None,
    'video_note': None,
    'from_user': {
        'username': 'username',
        'last_name': None,
        'first_name': 'userFirstName',
        'id': id,
        'language_code': 'es'
    },
    'delete_chat_photo': None,
    'new_chat_members': [{
        'id': id,
        'is_bot': True,
        'first_name': 'UserName',
        'username': 'newUserName'
    }],
    'new_chat_member': {
        'username': 'username',
        'last_name': None,
        'first_name': 'firstNameUser',
        'id': idUser,
        'language_code': None
    }
}

我的代码在python3中。您可以尝试一下并添加有关新用户的更多信息:

@bot.message_handler(func=lambda message: True, content_types=['new_chat_members'])
    def command_hi(m):
        cid = m.chat.id
        cname = m.chat.title
        idUser = message.from_user.id

        welcome = ""
        if (m.new_chat_member.username is None):
            nun = m.new_chat_member.first_name
            if (m.new_chat_member.last_name is not None):
                nun += " "
                nun += m.new_chat_member.last_name
            else:
                welcome= "Welcome to the group"
                welcome += str(cname)
                welcome += " "
        else:
            nun = m.new_chat_member.username
            welcome= "Welcome to the group  "
            welcome+= str(cname)
            welcome+= " @"

        bot.send_message(cid, str(welcome) + str(nun))
 类似资料:
  • 我一直在努力通过Smack和Openfire服务器与XMPP聊天。我的问题如下: 每当一个用户向另一个用户发送消息时,该消息就会在另一个用户处正确接收。但是任何回复都不会出现在第一条消息的发件人处。因此,用户1成功地发送给用户2。然后,用户2无法向用户1发送任何回复。另一方面,如果我重新启动并让用户再次登录,则用户2可以发送给用户1,但反之亦然。 我想说的是,只有聊天的发起者才能发送消息,接收者不

  • 我正在构建一个聊天应用程序,并使用 RecyclerView 呈现消息。由于这是一个聊天应用程序,最后的消息应显示在列表的底部。为了实现这一点,我通过以下方式使用LinearManager: 如果对话中有很多信息,它也能很好地工作。但是,如果用户之间只有一两条消息,RecyclerView会将它们显示在屏幕底部,并在它们上方留出空白。 在这种情况下,是否可以在屏幕顶部显示回收器项目?

  • 我正在开发一个1:1的聊天应用程序。在启动应用程序之前,我使用PHP服务器创建私有通道。正确创建通道。 生成用户令牌,并正确创建聊天客户端。我看到用户也是在服务中创建的。 它显示消息“正在连接....”然后在出现错误时停止。 PHP代码:

  • 为此他必须加入由用户A1创建的相同twilio通道,然后才能加载消息。 这就是我被困住的地方。 用户A2如何发现用户A1或任何其他用户是否给他发送了一些消息,并且他还需要知道他需要加入哪个通道来加载发送的消息。 https://github.com/philnash/twilio-chat-kendo-react 更新: 使用这个- 这就是我面临的问题。

  • 我正试图通过电报聊天发送消息。我希望电报设置只能通过官方用户界面完成,因为我希望它可能由最终用户完成。 以下是我所做的电报设置: 我通过获得令牌创建了机器人 我创建了一个通道: 点击"新频道" 通道名称: 点击下一步 选择私人频道 点击保存 添加我的机器人 点击制作管理员 点击保存 打开频道 在频道菜单上,选择“管理频道” 单击讨论中的“添加组” 单击“创建新组” 组名: 单击“创建” 单击“保存

  • 我对python有点陌生,这是我第一次使用套接字,我试图制作一个具有客户端和服务器的应用程序,用户可以在客户端中输入,它将被发送到服务器,然后将其发送给所有其他客户端。我已经将其设置为工作状态,但每当我尝试发送第二条消息时,我总是收到一个错误错误:[Errno 10058]发送或接收数据的请求被禁止,因为套接字已经在之前的关闭调用中关闭了该方向。我如何才能做到这一点? 尝试在启动新套接字或发送新消