close

【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機器人手把手教學:最輕鬆最詳細的方法 )

 

arrow
arrow

    恩哥Python 發表在 痞客邦 留言(2) 人氣()