【Telegram API】python用Telegram api來傳送圖片、文件、聲音、影片、影像等
一、前言
我先前的文章( 【Telegram API】Python打造Telegram機器人手把手教學:最輕鬆最詳細的方法 )
蠻多人來找我詢問與討論,這邊再補充介紹一下,如何透過telegram api來傳送圖片、聲音、影片、影像等。
其中最多人問的是如何用python透過telegram api來傳送本地端文件及圖片,這邊就直接告入大家吧!
二、傳送本地端圖片、文件、聲音、影片、影像等
其實就這樣而已,很簡單吧。其他我們來說說幾個要注意的地方。
media_type 裡面放著等等我們要使用的方法,之後就可以直接透過簡稱來呼叫方法。
dispatcher.bot.send_message(chat_id=who, text=text) 發送字幕
dispatcher.bot.send_photo(chat_id=who, photo=open(photo, 'rb')) 發送本地端圖片,要發送網址圖片拿掉open直接放網址即可。
dispatcher.bot.send_media_group(chat_id=who, media=reset_media_group) 一次發送一個集合,其中reset_media_group要是一個list,
且被 InputMediaAudio, InputMediaDocument, InputMediaPhoto, InputMediaVideo包覆過。
最後如果你要發送一個集合例如 media_group = [('D', photo1), ('D', photo2), ('D', data)] 一定要是同一種類別例如都是D(InputMediaDocument),
(最後我建議都直接用D就好,因為可以發送圖片、影片、檔案各種,除非你要發出對方顯示很大張的圖片)
from telegram.ext import Updater # 更新管家
from telegram import InputMediaAudio, InputMediaDocument, InputMediaPhoto, InputMediaVideo # 媒體發送
import telegram
import os
import pandas, numpy
import datetime
# 定義型態字典
media_type = {'A': InputMediaAudio, # 聲音
'D': InputMediaDocument, # 壓縮文件
'P': InputMediaPhoto, # 圖片
'V': InputMediaVideo # 影片
}
# 對某人或群組發話
def speaking(who, text):
dispatcher.bot.send_message(chat_id=who, text=text) # 發送訊息
# 發送圖片
def sending_photo(who, photo):
dispatcher.bot.send_photo(chat_id=who, photo=open(photo, 'rb'))
# 發送media_group
def making_media_group(InputMedias:tuple):
reset_media_group = []
try:
for media in InputMedias:
if media[0] == 'P' or 'D': # 圖片
m = media_type[media[0]](media=open(media[1], 'rb'))
else:
m = media_type[media[0]](media=media[1]) # 一般的
reset_media_group.append(m)
return reset_media_group
except:
print('error making!')
def sending_media_group(who, media_group:list):
reset_media_group = making_media_group(media_group)
dispatcher.bot.send_media_group(chat_id=who, media=reset_media_group)
# 使用時
media_group = [('D', photo1), ('D', photo2), ('D', data)]
sending_media_group(who, media_group)
三、後記
第一步踏出來就是這麼簡單,歡迎大家支持恩哥Python,你的鼓勵跟打賞是我撰寫文章的原動力!
( 【Telegram API】Python打造Telegram機器人手把手教學:最輕鬆最詳細的方法 )