我在电报中制作了机器人,它接受用户的一些请求。我的机器人应该发送有关请求状态更改的通知。我通过发送 get 请求将其与我的脚本分开。但有些用户收不到通知消息,因为这个错误"{ "ok": false, "error_code": 403, "description": "Forbidden: bot was returned by the user" }" 用户没有阻止机器人。该机器人出于某种原因阻止了自己。我不明白这是怎么发生的。用户无意识屏蔽机器人的原因是什么?我想为用户编写“如何不阻止机器人”的指南,但我不知道原因。我该如何解决这个问题?
这是我的要求:
https://api.telegram.org/bot<bot_token>/sendMessage?chat_id=<chat_id>&text=<Your request status changed>&reply_markup={"inline_keyboard": [[{"text": "View", "callback_data": "<request_id>"}]]}
Run Code Online (Sandbox Code Playgroud) 我想在我的机器人中使用ConversationHandler。至少,它需要三个参数:
class telegram.ext.ConversationHandler(entry_points, states, fallbacks)
Run Code Online (Sandbox Code Playgroud)
AFAIK,入口点是对话处理程序的触发器,然后每个状态都可以执行自己的处理程序,并且基于回退定义,如果状态中的所有处理程序都返回false,则触发回退。
好的,因此,处理程序会返回一些内容。但处理程序是一个对象,一个类的实例。
基于这个例子,寻找例子来了new_alarm_handler。
处理程序如何返回值?(他们似乎返回了回调函数结果)。
对话的当前状态在哪里?它似乎无法访问,但却是最后执行的处理程序的最后结果。是吗?如果不是,那么我必须做什么才能改变对话中的当前状态?
因此,当达到某个状态时,states将执行它们的处理程序列表(作为 arg 传递的字典中的值)。但作为一个列表,它可能不止一个,因此可能有多个返回状态。它是如何管理的?
我正在使用python-telegram-botpython3.x 库用 python 编写一个 Telegram 机器人,它是一个仅供私人使用的机器人(我和一些亲戚),所以我想阻止其他用户使用它。我的想法是创建一个授权用户 ID 列表,并且机器人不得回复从不在列表中的用户收到的消息。我怎样才能做到这一点?
编辑:我对 python 和python-telegram-bot. 如果可能的话,我希望有一个代码片段作为示例 =)。
我想知道是否有办法使用机器人 API 查找用户对非匿名投票的回复。我可以获得投票数,但我想知道特定用户的实际选择。
我收到此异常:“发生异常:AttributeError __aenter__” in line async with bot:。(我输入了令牌)。请帮忙
import asyncio
import telegram
async def main():
bot = telegram.Bot("token")
async with bot:
print(await bot.get_me())
if __name__ == '__main__':
asyncio.run(main())
Run Code Online (Sandbox Code Playgroud)
我在这里找到了这段代码:https ://github.com/python-telegram-bot/python-telegram-bot/wiki/Introduction-to-the-API
I've downloaded this open-source code from GitHub which is written in Python(that I'm pretty new to it), I wanted to make my bot to have a Custom-Keyboard instead of letting users say whatever they wanted. for instance if user start the chat with my bot, they will automatically send /start and when this happens I want my bot to give them two to three options ['Option One'], [Option Two], on keyboard, when they choose one of those options, I want …
我想在内联键盘的聊天中更新消息但是无法理解如何接收inline_message_id,或者它是否仅用于内联查询我如何确定chat_id和message_id在类电报中的editMessageText(*args,**kwargs)上使用它.bot.Bot?
我的代码示例(部分内容):
#!/usr/bin/python
import telegram
from telegram.ext import Updater, CommandHandler, MessageHandler, Filters, InlineQueryHandler, CallbackQueryHandler
tokenid = "YOUR_TOKEN_ID"
def inl(bot, update):
if update.callback_query.data == "k_light_on":
#func for turn on light res = k_light.on()
bot.answerCallbackQuery(callback_query_id=update.callback_query.id, text="Turning on light ON!")
bot.editMessageText(inline_message_id=update.callback_query.inline_message_id, text="Do you want to turn On or Off light? Light is ON")
#hardcoded vars variant
#bot.editMessageText(message_id=298, chat_id=174554240, text="Do you want to turn On or Off light? Light is ON") …Run Code Online (Sandbox Code Playgroud) 我正在使用 Telepot 模块使用 python 创建电报机器人。我需要获取传出消息的消息 ID,以便能够检查用户是否会回复该消息。下面的一段代码阐明了我想要做什么:
import telepot
bot = telepot.Bot('Some Token')
def handle(msg):
chat_id = msg['chat']['id']
message_id = msg['message_id'] # I can get Id of incoming messages here
command = msg['text']
if command == '/command': # Message (incoming) 1 sent by user
bot.sendMessage(chat_id, 'Some message') # Message (outgoing) 2 sent by bot
elif ('''msg was in reply of message 2'''): # Message (incoming) 3 sent by user (MY PROBLEM IS HERE!!!)
# Do something
pass
bot.message_loop(handle, run_forever = 'Running …Run Code Online (Sandbox Code Playgroud) 我正在使用Python-Telegram-Bot创建一个Telegram Bot
我知道update.message.chat_id返回用户的聊天ID,但我需要知道如何获取用户的用户名或名字和/或姓氏.
我在Telegram的文档中找到了这个,但我不知道如何使用它(我试过bot.getChat(update.message.chat_id)但没有结果)
我正在用 Python 开发 Telegram Bot,但我很难正确使用 Markdown。但是我找不到有关电报降价实施的任何适当资源。由于两个不同的降价“版本”(Markdown 和 Markdown_V2),它变得更加复杂。并且它们都与正常聊天字段的行为(手动输入)不匹配。
测试字符串:
*Bold*, _italic_, *_bold and italic_*, **double bold**, __double italic__, __**double bold and double italic**__
Run Code Online (Sandbox Code Playgroud)
parse_mode="Markdown":
粗体、斜体、_粗体和斜体_、双粗体、双斜体、双粗体和双斜体
parse_mode="Markdown V2":
粗体、斜体、粗体和斜体、双粗体、双斜体、双粗体和双斜体
在聊天中:
*粗体*、_斜体_、*_粗体和斜体_*、双粗体、双斜体、**双粗体和双斜体**
——
如何添加粗体和斜体,是否还有其他命令,例如下划线等?我需要一些解释。谢谢。