只要用户使用Telegram bot API读取机器人发送的消息,是否有可能在webhook中获得回调?
它没有记录,我无法弄清楚如何实现它.
我想pending_update_count在我的机器人中清除所有内容!
以下命令的输出:
https://api.telegram.org/botxxxxxxxxxxxxxxxx/getWebhookInfo
Run Code Online (Sandbox Code Playgroud)
显然我用xxx替换了真正的API令牌
这是 :
{
"ok":true,"result":
{
"url":"",
"has_custom_certificate":false,
"pending_update_count":5154
}
}
Run Code Online (Sandbox Code Playgroud)
正如你所看到的,我5154现在有未读更新!(我很确定这个挂起的更新是错误的!因为没有人使用这个Bot!它只是一个测试Bot)
顺便说一下,这个pending_update_count数字正在快速增长!现在我正在写这篇文章,这个数字增加了51,达到了5205!
我只想清除这些待定更新.我很确定这个Bot已陷入无限循环!
有没有办法摆脱它?
PS:
我也清除了webhook网址.但没有改变!
更新:
输出getWebhookInfo是这样的:
{
"ok":true,
"result":{
"url":"https://somewhere.com/telegram/webhook",
"has_custom_certificate":false,
"pending_update_count":23,
"last_error_date":1482910173,
"last_error_message":"Wrong response from the webhook: 500 Internal Server Error",
"max_connections":40
}
}
Run Code Online (Sandbox Code Playgroud)
为什么我得到Wrong response from the webhook: 500 Internal Server Error?
我想了解 Telegram bot API 对消息发送施加的限制。
我知道目前您不能向不同的用户发送超过 30 条消息。
我有许多机器人在同一台服务器上运行(Webhooks 和 Pull Updates),它们会影响彼此的限制吗?
我还有一个多租户机器人,您可以注册许多机器人帐户,并且它将以相同的方式同时管理它们。
如果我使用不同的机器人帐户(令牌)发送消息但来自同一服务器,它是否将我限制为每个主机或每个机器人帐户 30 条消息?
遇到问题,当我尝试将 GIF 发送到我的机器人时,但机器人无法访问图像的原始大小。似乎电报服务器将其转换为 mp4(这是个好主意,看起来不错),当我尝试下载它时 - 它总是看起来像一个最大 320 像素的缩略图。
看起来,它是一个api 错误,因为例如这里:
它描述为 600x473px,但实际下载的 mp4 大小是:
所以,试图理解 - 我在这里错了,因为我的项目需要原始 gif 大小......也许这里存在任何解决方法?
附:如果手动将 gif 转换为 mp4 并保存质量和大小,然后提交给 bot - 它工作得很棒,没有任何额外的压缩等,但在使用 bot 之前要求使用它是不可接受的。
更新 :
要重现(您需要 bot/bot_token 并且还需要能够使用 json 接收 webhook):
1)通过 Windows 10 电报客户端 (v2.1.10)将此 gif ( https://c2n.me/47Y3H37.gif ) 发送到机器人。使用“无压缩发送”。Gif 大小:600x473,3.35MB
2) Bot 接收和 Telegram 发送 webhook :
{
"update_id": 290360893,
"message": {
"message_id": 21,
"from": {
"id": 101483786,
"is_bot": false,
"first_name": "edited",
"last_name": "edited", …Run Code Online (Sandbox Code Playgroud) 我在 BotFather Telegram 中创建了一个新游戏。但是没有关于游戏链接的任何问题。此外,在“sendGame”函数中没有任何参数来设置游戏网址。如何在 BotFather 创建的游戏后面设置我的 gameUrl?
我应该说,我正在使用 Microsoft Bot Framework 来开发我的机器人。
我有 mp3 的工作 url,并且我正在尝试通过此 url 将音频发送到 Telegram。它有时会起作用,但大多数时候都会出错
"A request to the Telegram API was unsuccessful. The server returned HTTP 400
Bad Request. Response body:
[b'{"ok":false,"error_code":400,"description":"Bad Request: failed to get HTTP
URL content"}']"
Run Code Online (Sandbox Code Playgroud)
我不明白为什么,因为我检查了大小和类型,一切都很清楚,我在 Telegram API 文档中找不到更多限制。谁知道错误原因是什么?
链接到 mp3 - http://data3.api.xn--41a.ws/vkp/cs9-5v4.userapi.com/p15/51bdb5ec5899ed.mp3
python-3.x telegram python-telegram-bot telegram-bot telegram-webhook
我go-telegram-bot-api用于构建 Telegram Bot 并将其部署在Heroku 上。
我需要像以前在 Python 中所做的那样设置 Webhooks,就像在这个 Python 案例中一样。
无法理解如何在go-telegram-bot-api不提供证书文件的情况下设置 Webhooks 。
主要示例包含以下几行:
如果您需要使用网络钩子(如果您希望在 Google App Engine 上运行),您可以使用稍微不同的方法。
package main
import (
"gopkg.in/telegram-bot-api.v4"
"log"
"net/http"
)
func main() {
bot, err := tgbotapi.NewBotAPI("MyAwesomeBotToken")
if err != nil {
log.Fatal(err)
}
bot.Debug = true
log.Printf("Authorized on account %s", bot.Self.UserName)
_, err = bot.SetWebhook(tgbotapi.NewWebhookWithCert("https://www.google.com:8443/"+bot.Token, "cert.pem"))
if err != nil {
log.Fatal(err)
}
updates := bot.ListenForWebhook("/" + bot.Token)
go http.ListenAndServeTLS("0.0.0.0:8443", "cert.pem", "key.pem", nil) …Run Code Online (Sandbox Code Playgroud) 如何获取用户发送给我的机器人的 MIME 类型的照片?
我通过Telegraf使用 Telegram Bot API 。
我的机器人正在保存用户发送的照片和视频中的文件 ID,我希望稍后能够下载这些文件。getFile下载它们的方法的电报 API指出:
注意:此函数可能不会保留原始文件名和 MIME 类型。当收到 File 对象时,您应该保存文件的 MIME 类型和名称(如果可用)。
我不完全确定这是什么意思。到目前为止我还没有收到一个File对象,它甚至不包含 MIME 类型。我认为他们想说的是,下载实际文件时,MIME 类型(和文件名)可能会混淆,因此您应该自己存储它。
当查看不同文件类型的更新类型时,它们通常包含 MIME 类型,如下所示:Video。不幸的是,照片的更新对象不包含以下信息:PhotoSize。还有其他方法可以获取 MIME 类型的照片吗?
感谢您的帮助。
我需要使用 aioflask 为我的 telegram-bot 设置 webhook。这是我的代码,我在其中设置了 webhook:
from aioflask import Flask, request
...
app = Flask(__name__)
...
@app.route('/')
async def webhook():
await bot.delete_webhook()
await bot.set_webhook(url=APP_URL)
return '!', 200
...
Run Code Online (Sandbox Code Playgroud)
但是,当我运行应用程序时,它给了我这个错误:
Traceback (most recent call last):
File "D:/Python_Projects/FilmMarketBot/check.py", line 1, in <module>
from aioflask import Flask, request
File "D:\Python_Projects\FilmMarketBot\venv\lib\site-packages\aioflask\__init__.py", line 2, in <module>
from .app import Flask
File "D:\Python_Projects\FilmMarketBot\venv\lib\site-packages\aioflask\app.py", line 14, in <module>
from .ctx import AppContext, RequestContext
File "D:\Python_Projects\FilmMarketBot\venv\lib\site-packages\aioflask\ctx.py", line 4, in <module>
from flask.ctx import AppContext as OriginalAppContext, \ …Run Code Online (Sandbox Code Playgroud) 当我从事机器人开发时,我发现来自用户的消息有一些名为 的字段username,例如
{
update_id: 123567890,
message: {
message_id: 1,
from: {
id: 1234567890,
is_bot: false,
first_name: "Kappa",
last_name: "Pride",
username: "kappapride",
}
...
}
Run Code Online (Sandbox Code Playgroud)
该字段是否包含唯一值,例如idfield?我知道,我可以与它建立 TG 链接(如@kappapride),但我不确定该字段是否为每个 TG 用户提供。
telegram-webhook ×10
telegram-bot ×9
telegram ×7
webhooks ×4
botframework ×1
flask ×1
go ×1
heroku ×1
python-3.x ×1
telegraf ×1
telegram-api ×1