我正在使用Telegram Bot API向用户发送即时消息.我已经安装了nuget包.电报开发人员推荐这个软件包.
我创建了一个电报机器人,并使用代码成功访问了它.当我向机器人发送消息时,机器人会获得有关发送者的一些信息.
我需要用户的电话号码在我们的系统中识别它们并将信息发回给他们.
我的问题是我可以获得用户电话号码telegramUserId吗?
我这样做是为了方便用户.如果我能得到用户电话号码,我不应该向用户索要.
现在我的命令是这样的:
debt 9811201243
Run Code Online (Sandbox Code Playgroud)
我想要
debt
Run Code Online (Sandbox Code Playgroud) 我是Telegram API的新手.我想自动将消息发布到我的公共电报频道.我读了一些帖子,我可以用机器人实现这一点,但我不确定这是否是最好的方式以及API是否有选项可以直接发布到频道.
我想得到一些关于如何实现这一目标的起点?我应该使用哪种API?我是需要开发帐户还是机器人等?
正如标题所说,是否可以通过username获取userid?我的意思是,我想向我的机器人添加一项功能,告诉您其他用户使用其用户名的用户 ID。
Telegram API 是否提供了执行此操作的选项?
ReplyKeyboardMarkup包含少量按钮的消息(例如 ["Yes", "No"])Yes")",我想显示带内联键盘的消息并隐藏在步骤1发送的按钮.有可能吗?该消息只有一个reply_markup属性,可以是InlinkeKeyboardMarkup或ReplyKeyboardHide.我看到的唯一方法是发送2条消息(首先隐藏键盘,第二条用内联键盘),但从用户体验的角度来看,这不是最好的解决方案.我可以做几个请求,但希望用户只能看到一条消息.
有什么想法吗?
使用Telegram Bot API,
我知道可以通过https://core.telegram.org/bots/api#sendphoto发送图像
但是,如何将远程图像嵌入格式化的消息中?
我希望发送的消息可以与新标题进行比较,标题为粗体,图像和带链接的较长文本.我想出了如何使用markdown创建粗体文本和链接,但我没有插入图像.我们怎么做?
我的机器人发送带有 2 个内联回调按钮的选择:喜欢/不喜欢。用户单击喜欢或不喜欢按钮后,我希望这个内联键盘消失。
这就是我制作不喜欢按钮的方法
dislike_button =types.InlineKeyboardButton (text=emojize("Dislike :broken_heart:", use_aliases=True), callback_data='dislike')
keyboard.add(dislike_button)
Run Code Online (Sandbox Code Playgroud)
这就是如何处理点击这个按钮
@bot.callback_query_handler(func=lambda call: True)
def query_handler(call):
if call.data == 'dislike':
bot.answer_callback_query(callback_query_id=call.id, text='you disliked it!')
Run Code Online (Sandbox Code Playgroud)
如何使该按钮在单击后消失?或者我怎样才能不再点击这个喜欢或不喜欢的按钮?
我正在建立一个电报机器人.
这意味着我一次管理几个聊天(每个聊天都有一个独特的聊天ID).
当用户向机器人发送消息时回复答案.
我正在使用通过HTTP的电报API.
但是,当我想发送一些消息时,它们有时会以错误的顺序到达,因为它不确定首先接受哪个HTTP请求.
有没有未记录的方法将序列参数发送到电报API,还是我必须处理队列中的HTTP请求?
Telegram bot向我发送了一条带有文本片段的消息,我想编辑它,然后发送回机器人进行进一步处理.
复制和粘贴需要时间.重新输入信息需要时间.
理想情况下,我想在机器人的消息上按一个内联按钮"编辑",并在我的回复输入框中显示消息文本进行编辑.(以某种方式附加到我的回复的消息ID将是一个加号).
我尝试使用除/ start*之外的参数的深度链接,但这似乎不起作用.
我可以使用bot API(或任何其他电报API)准备好在我的输入框中编辑文本吗?
鉴于:
行动:
在短时间内(1-2 秒)单击任何按钮两次(或更多次)
问题:
当我单击组中的按钮时 - 一切正常,但是当我在频道中单击具有相同逻辑的相同按钮时:
第一个 api 调用执行速度很快 但是第二个 api 调用需要大约 5 秒才能得到响应,这会冻结业务逻辑并让用户感到恼火
方法:
private fun updateChatMarkup(messageId: Int, votes: Map<VoteValue, Int>) =
EditMessageReplyMarkup()
.setChatId(chatId)
.setMessageId(messageId)
.setReplyMarkup(createMarkup(votes)).let { execute(it) }
private fun updateChannelMarkup(messageId: Int, votes: Map<VoteValue, Int>) =
EditMessageReplyMarkup()
.setChatId(channelId)
.setMessageId(messageId)
.setReplyMarkup(createMarkup(votes, messageId)).let { execute(it) }
Run Code Online (Sandbox Code Playgroud)