标签: python-telegram-bot

无法向 Telegram 中的某些机器人用户发送消息

我在电报中制作了机器人,它接受用户的一些请求。我的机器人应该发送有关请求状态更改的通知。我通过发送 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)

http-get telegram python-telegram-bot telegram-bot

2
推荐指数
1
解决办法
2万
查看次数

如何在 python-telegram-api 的 ConversationHandler 中管理当前状态

我想在我的机器人中使用ConversationHandler。至少,它需要三个参数:

class telegram.ext.ConversationHandler(entry_points, states, fallbacks)
Run Code Online (Sandbox Code Playgroud)

AFAIK,入口点是对话处理程序的触发器,然后每个状态都可以执行自己的处理程序,并且基于回退定义,如果状态中的所有处理程序都返回false,则触发回退。

好的,因此,处理程序会返回一些内容。但处理程序是一个对象,一个类的实例。

基于这个例子,寻找例子来了new_alarm_handler

所以我的疑惑

  1. 处理程序如何返回值?(他们似乎返回了回调函数结果)。

  2. 对话的当前状态在哪里?它似乎无法访问,但却是最后执行的处理程序的最后结果。是吗?如果不是,那么我必须做什么才能改变对话中的当前状态?

  3. 因此,当达到某个状态时,states将执行它们的处理程序列表(作为 arg 传递的字典中的值)。但作为一个列表,它可能不止一个,因此可能有多个返回状态。它是如何管理的?

python python-telegram-bot

2
推荐指数
1
解决办法
7221
查看次数

如何限制 Telegram 机器人仅对某些用户使用?

我正在使用python-telegram-botpython3.x 库用 python 编写一个 Telegram 机器人,它是一个仅供私人使用的机器人(我和一些亲戚),所以我想阻止其他用户使用它。我的想法是创建一个授权用户 ID 列表,并且机器人不得回复从不在列表中的用户收到的消息。我怎样才能做到这一点?

编辑:我对 python 和python-telegram-bot. 如果可能的话,我希望有一个代码片段作为示例 =)。

restriction python-3.x telegram python-telegram-bot

2
推荐指数
1
解决办法
9075
查看次数

从 Telegram 的机器人 API 获取投票结果和用户选择

我想知道是否有办法使用机器人 API 查找用户对非匿名投票的回复。我可以获得投票数,但我想知道特定用户的实际选择。

python telegram python-telegram-bot telegram-bot

2
推荐指数
1
解决办法
7686
查看次数

出现异常:AttributeError __aenter__

我收到此异常:“发生异常: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

python python-asyncio python-telegram-bot

2
推荐指数
1
解决办法
3488
查看次数

Telegram Bot: Custom Keyboard [Python]

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 …

python python-telegram-bot telegram-bot

1
推荐指数
1
解决办法
7946
查看次数

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

我想在内联键盘的聊天中更新消息但是无法理解如何接收inline_message_id,或者它是否仅用于内联查询我如何确定chat_idmessage_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)

python telegram python-telegram-bot telegram-bot

1
推荐指数
1
解决办法
7822
查看次数

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

我正在使用 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 python-telegram-bot telegram-bot

1
推荐指数
1
解决办法
4052
查看次数

如何使用Python-Telegram-Bot获取电报用户的用户名,名字或姓氏?

我正在使用Python-Telegram-Bot创建一个Telegram Bot

我知道update.message.chat_id返回用户的聊天ID,但我需要知道如何获取用户的用户名或名字和/或姓氏.

我在Telegram的文档中找到了这个,但我不知道如何使用它(我试过bot.getChat(update.message.chat_id)但没有结果)

python telegram python-telegram-bot telegram-bot

1
推荐指数
2
解决办法
7001
查看次数

Python Telegram Bot Markdown

我正在用 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"

粗体斜体粗体和斜体、双粗体、双斜体、双粗体和双斜体

聊天中

*粗体*、_斜体_、*_粗体和斜体_*、双粗体双斜体**双粗体和双斜体**

——

如何添加粗体斜体,是否还有其他命令,例如下划线等?我需要一些解释。谢谢。

python markdown python-3.x python-telegram-bot telegram-bot

1
推荐指数
1
解决办法
8711
查看次数