问题标签 [python-telegram-bot]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
805 浏览

python - 投票前检查互联网连接?(电报机器人)

我的电报机器人有问题。只是使用

当互联网连接断开时,脚本会崩溃,因为轮询失败。

我想添加一些代码以在机器人轮询之前检查互联网连接是否可用,

就像是:

“如果”状态为“已连接”---> 机器人轮询。

else ----> 等待并在“秒”后重试

0 投票
2 回答
18337 浏览

python - 使用回调查询使用内联键盘更新消息

我想用内联键盘更新聊天中的消息,但不明白如何接收inline_message_id或者如果它仅用于内联查询,我如何确定chat_idmessage_id以便在类电报中的editMessageText(*args, **kwargs)上使用它.bot.Bot ?

我的代码示例(部分):

当我运行它时,我有一个错误:

我检查了 var update.callback_query.inline_message_id它是空的。当我使用硬编码的变量chat_idmessage_id尝试bot.editMessageText时,它运行良好。

当他们运行命令 /light 并且当他们按下内联按钮时,我是否需要保存在数据库中(对于所有用户)vars chat_idmessage_id我需要从数据库中读取这个值,或者我可以使用一些更简单的方法来编辑消息?

0 投票
2 回答
1402 浏览

telegram - 我的机器人如何从 Telegram 上的用户那里获取组 ID?

我正在构建一个机器人,它必须从用户那里接收一个组作为输入,以便它知道用户想要执行某个 X 操作的组。怎么做?

我想过像poll-bot那样与一些回调数据进行深度链接,但问题是我不希望用户在组上写任何东西(是的,用户和机器人都在组中)。

我还考虑过将一个组(机器人所在的位置)中的所有用户提供给一个数据库,然后询问用户他想要哪个组,但仍然无法使用电报机器人 API 来做到这一点。

谢谢!

0 投票
1 回答
6133 浏览

api - 如何使用电报内联机器人获取组 ID 和聊天 ID?

你们中有人知道@like 电报机器人是如何工作的吗?

当我使用内联在群组中调用它,然后选择发布新帖子时,它会将我转发到机器人聊天,当我完成时,它会将我转发回原来的群组。所以它必须以某种方式具有组ID。

但根据 API 文档,这是不可能的。

我尝试了一些测试,我得到的只是用户 ID(作为聊天 ID)

我希望能够从组中调用内联机器人,然后将其转发到带有用户 ID 和组 ID 的机器人聊天。似乎@like 机器人可以做到这一点,但我不知道怎么做。

有人能帮我吗?

0 投票
1 回答
586 浏览

telegram-bot - Telegram bot:可用命令的目录

如何为 Telegram 机器人组织可用命令的字典?优秀的程序员是如何做到的?我知道写几十个if语句是一个坏主意,就像一个switch语句一样。

现在它是使用实现的switch

  1. 机器人收到命令
  2. 在一个switch
  3. 处理命令
  4. 将响应发送给用户

但是当有几十个命令时,switch操作员变得难以维护。解决这个问题的常用方法是什么?

0 投票
1 回答
1167 浏览

javascript - 聊天字段上的电报机器人键盘

我想单击一个按钮并在聊天字段中显示文本,而不是直接在聊天屏幕上?

例如:

  • 有一些按键键盘 [1] [2] [3]
  • 当我按下 [1] 按钮然后1显示在聊天字段上,而不是在聊天屏幕上
  • 当我单击 [3][2][1] 时,将显示聊天字段321
  • 当我按下<enter> 321时屏幕上显示。

问题

这在电报机器人上可行吗?

0 投票
1 回答
4456 浏览

python - 如何在 Telepot 模块中获取传出消息 ID?

我正在使用 Telepot 模块使用 python 创建一个电报机器人。我需要获取传出消息的消息 ID,以便能够检查用户是否会回复该消息。下面的代码阐明了我想要做什么:

因此,正如您在上面的代码中看到的,我需要检查消息 3 是否是对消息 2 的回复。但是,我无法获取消息 2 的 ID,因为它是来自 bot 的传出消息(不是用户传入的消息我可以得到它的ID)。那么我该如何实现呢?

谢谢。

0 投票
2 回答
369 浏览

python - 如何与机器人对话?

我想向python 电报机器人发送一个特定的命令,该命令会导致机器人响应更多信息的请求并监听包含该额外信息的另一条消息。

例如:

  • 我发送/add机器人回复:ok, tell me your torrent link
  • 我通过 torrent 链接向机器人发送另一条消息,机器人将其保存到 Python 变量中以供进一步使用。
0 投票
1 回答
660 浏览

python - 如何让 python 线程倒计时然后执行操作?

我有一个脚本可以访问 Telegram 机器人的 api,但不幸的是它一次只能处理一条消息。

我的最终目标是让它在有人开始游戏时启动一个计时器线程,并且在一定时间后(如果他们还没有赢得游戏)它会重置游戏以避免阻止组中的另一个用户玩游戏(我将其设置为一次只玩一场比赛以避免混淆)。

例如:

我尝试了一个单词解读游戏:

但是,使用此代码,它将接收并处理第一条消息,然后等待 30 秒,发送失败的代码,然后处理第二条消息。

我对线程的过程不太熟悉,所以有没有办法可以设置它来启动一个新线程来处理倒数计时器,以便它可以继续处理消息,或者这一切都是失败的原因?

如果没有办法使用我当前访问电报 api 的方法设置计时器,那么更聪明的方法是什么?

0 投票
1 回答
1500 浏览

python - 如何使用电报机器人 api 以编程方式使用 python 创建垂直自定义键盘布局?

我正在尝试使用电报的 Telepot api 包装器创建一个基于卡片的游戏机器人,但我不知道如何使它使用垂直布局而不是水平布局

示例代码:

然后我将 sendMessage() 方法与ReplyKeyboardMarkup() 方法一起使用,但是它创建了一排又高又瘦的按钮,这会影响文本的显示。

有没有我错过的步骤?我能够使用以下方法创建一个正方形的键:

我只使用第二种方法创建了一个键盘,因为我能够手动而不是以编程方式创建它,但是我没有办法在不按顺序访问每张卡片的情况下处理卡片列表,因为它是一个动态列表,每回合都会发生变化.

我查看了 api 说明,但找不到任何可以使用的东西

我假设根据第二个键盘的结果,我可以通过使每张卡成为一个数组来创建垂直行,因此它将嵌套在原始数组中,但事实证明并非如此

我错过了一步吗?