标签: telegram-bot

Telegram API SendVoice 方法将语音作为文件发送

我正在尝试通过 SendVoice 方法发送语音消息,但它将语音作为简单的 ogg 文件发送(不可播放)。

https://api.telegram.org/bot<token>/sendVoice?chat_id=x&voice=http://majidamiri.com/up/5.ogg
Run Code Online (Sandbox Code Playgroud)

Telegram API SendVoice中,它指出该文件应为 .ogg opus 格式,因此我使用以下代码通过 ffmpeg 将 mp3 文件转换为 opus ogg:

<?php $myConvert = exec('ffmpeg.exe -i 1.mp3 -acodec libopus -b:a 64k -vbr off -compression_level 10 5.ogg'); ?>

再次像之前一样将其作为文件发送。

我的 ogg 链接: https: //majidamiri.com/up/5.ogg

你能帮我解决这个问题吗?

谢谢你们 。

telegram-bot

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

电报机器人:ChatId ?未获取 ChatId,但 {"ok":true,"result":[]}

尝试了Telegram bot - how to get a group chat id ?中描述的所有选项 红宝石宝石 Telegram_bot

当浏览到: https: //api.telegram.org/botXXX:YYYY /getUpdates 时,我得到的是:

{“确定”:true,“结果”:[]}

我究竟做错了什么?

telegram-bot

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

无法将音频上传到 telegram 错误请求:无法获取 HTTP URL 内容

我有 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

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

如何停止电报中的自动播放?

我开发了一个 Telegram 机器人。机器人连续发送一些音频文件。因此,当我播放最后一个音频文件时,将自动播放最后一个音频文件之前的前一个音频文件。如何禁用电报中的自动播放?我想根据用户选择播放每个音频文件。

telegram telegram-bot

6
推荐指数
0
解决办法
3035
查看次数

Telegram Bot API:如何获取收到的照片的 MIME 类型

如何获取用户发送给我的机器人的 MIME 类型的照片?

我通过Telegraf使用 Telegram Bot API 。

我的机器人正在保存用户发送的照片和视频中的文件 ID,我希望稍后能够下载这些文件。getFile下载它们的方法的电报 API指出:

注意:此函数可能不会保留原始文件名和 MIME 类型。当收到 File 对象时,您应该保存文件的 MIME 类型和名称(如果可用)。

我不完全确定这是什么意思。到目前为止我还没有收到一个File对象,它甚至不包含 MIME 类型。我认为他们想说的是,下载实际文件时,MIME 类型(和文件名)可能会混淆,因此您应该自己存储它。

当查看不同文件类型的更新类型时,它们通常包含 MIME 类型,如下所示:Video。不幸的是,照片的更新对象不包含以下信息:PhotoSize。还有其他方法可以获取 MIME 类型的照片吗?

感谢您的帮助。

telegram telegram-bot telegraf telegram-webhook

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

telegram如何判断用户语言

API 对象User具有属性language_code- Telegram 如何确定用户的语言,以及如何更改它?

我希望根据language_code语言为用户创建响应,但我不确定我是否可以信任这个值,因为例如我的language_code'en',但对于聊天或用户界面我正在使用另一个!

telegram telegram-bot

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

有没有办法验证 telegram bot api 的 markdown 语法?

我目前正在使用 telegram Bot API,但我必须验证 markdown 语法以防止解析错误。但是 telegram bot api 的 markdown 不遵循常规的 markdown 语法,所以我有点苦恼如何做到这一点。有没有正确的方法来验证它?或者有这样的图书馆我可以使用吗?

markdown telegram telegram-bot

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

如何将媒体下载到 Telethon 上的特定路径

我正在研究 telethon download_media 和 _download_document 方法,用于从电报下载媒体。我的代码是这样的:

from telethon import TelegramClient

api_id = 12345
api_hash = '0123456789abcdef0123456789abcdef'
client = TelegramClient('anon', api_id, api_hash)

async def main():
    async for message in client.iter_messages('me'):
        print(message.id, message.text)

        # You can download media from messages, too!
        # The method will return the path where the file was saved.
        if message.photo:
            path = await message.download_media()
            print('File saved to', path)  # printed after download is done

with client:
    client.loop.run_until_complete(main())
Run Code Online (Sandbox Code Playgroud)

但是此代码无法将媒体下载到特定路径,并且如何获取保存的文件的名称

python file telegram telegram-bot telethon

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

如何在我的电报机器人中读取/接收电报频道消息?

我正在尝试创建一个机器人,它可以读取/接收特定频道中的所有消息并将它们发送给我。我的问题是我找不到方法来访问我的机器人中的这些消息

重要的是:

  1. 我不是该频道的管理员或创建者
  2. 我不想要求创建者将我的机器人添加为管理员

我在谷歌中搜索过,但我无法找到解决方案,而且我也确信可以做到这一点,因为已经有一些具有完全相同性能的连接机器人。任何参考或建议表示赞赏。

telegram python-telegram-bot telegram-bot

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

如何在电报机器人中定期发送 InlineKeyboardButton?

我正在尝试每 x 秒发送一次InlineKeyboardHandler。为此我使用了它updater.job_queue.run_repeating,但它的行为很奇怪。

除非我先与机器人进行另一次交互,否则键盘无法工作。我编写了一段简单的代码,您可以测试一下。

from telegram import Update, InlineKeyboardButton, InlineKeyboardMarkup
from telegram.ext import Updater, CommandHandler, ConversationHandler, CallbackContext, CallbackQueryHandler

user_id = '*********'
tlg_token = '******************************'
SELECTING_COMMAND=1
keyboard = [[InlineKeyboardButton('Button: Print Clicked', callback_data=1)],]
reply_markup = InlineKeyboardMarkup(keyboard)

def menu(update: Update, context: CallbackContext) -> int:
    update.message.reply_text('sent by command button:', reply_markup=reply_markup)
    return SELECTING_COMMAND

def InlineKeyboardHandler(update: Update, _: CallbackContext) -> None:
    print('clicked')
    return 1

def cancel(update: Update, context: CallbackContext) -> int:
    return ConversationHandler.END    

updater = Updater(tlg_token, use_context=True)
dispatcher = updater.dispatcher

conv_handler = …
Run Code Online (Sandbox Code Playgroud)

python telegram telegram-bot

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