Telegram 聊天機器人中獲取照片
為了開發一個可以從使用者中檢索照片並對媒體檔案執行多種操作的簡單機器人,開發者使用 pyTelegramBotAPI 進行設計。 在檢視 Wiki 時發現,可以使用特殊處理程式按內容型別劃分接收到的訊息。
根據 Wiki,開發者用
@bot.message_handler(content_types= ["photo"])
方法來驗證使用者。
然而,在執行該方法時,開發者遇到了一個錯誤:“No JSON object could be decoded”。
開發者不確定是自己的程式碼錯誤還是 API 問題,因此尋求幫助。
解決方案
答案 1:下載照片
第一位回覆者提供了一個下載照片的程式碼示例。
該方法使用
bot.download_file()
函式,該函式需要檔案的
file_id
來下載檔案。
此方法會將照片下載到指令碼所在的目錄,並將其命名為 “image.jpg”。
答案 2:獲取照片 URL
第二位回覆者提供了一個更全面的解決方案。
該方法使用
processPhotoMessage()
函式來處理照片訊息。這個函式首先獲取照片的
file_id
,然後使用
bot.get_file()
函式來獲取檔案資訊。
此方法會將檔案資訊儲存在
file
變數中,以便以後使用。
然後,該方法使用另一個函式
photo()
來處理照片訊息。這個函式呼叫
processPhotoMessage()
函式來獲取檔案資訊,然後使用
file.file_path
來獲取檔案的相對路徑。
相對路徑可以透過在 Telegram API 中使用
模板來獲得完整照片 URL。
程式碼示例
以下是在 Python 中用 pyTelegramBotAPI 獲取照片的完整程式碼示例:
import telebot
import flask
import decorator
from subprocess import Popen, PIPE
# Telegram bot token
TELEBOT_TOKEN = '<token>'
# Flask app
app = flask. Flask( __name__)
# Telebot
bot = telebot. TeleBot( TELEBOT_TOKEN)
# Decorator for error logging
@decorator. decorator
def errLog( func, * args, ** kwargs):
result = None
try:
result = func( * args, ** kwargs)
except Exception as e:
print( e. __repr__())
return result
# Handle text messages
@bot. message_handler( content_types =[ 'text'])
def echo( message):
bot. send_message( message. chat. id, message. text)
# Handle photo messages
@errLog
def processPhotoMessage( message):
print( 'message.photo =', message. photo)
fileID = message. photo[ - 1]. file_id
print( 'fileID =', fileID)
file = bot. get_file( fileID)
print( 'file.file_path =', file. file_path)
@bot. message_handler( content_types =[ 'photo'])
def photo( message):
processPhotoMessage( message)
# Main function
def main():
global data
bot. remove_webhook()
bot. set_webhook( url = WEBHOOK_URL_BASE + WEBHOOK_URL_PATH,
certificate = open( WEBHOOK_SSL_CERT, 'r'))
# Run Flask app
app. run( host = WEBHOOK_LISTEN,
port = 8443,
ssl_context =( WEBHOOK_SSL_CERT, WEBHOOK_SSL_PRIV),
debug = False)
if __name__ == '__main__':
main()
這個更全面的解決方案可以幫助開發者從使用者的 Telegram 聊天機器人中正確獲取照片。
如果要獲取照片的完整 URL,可以使用 Telegram API 中提供的模板。
因為現在得圖片版權很多,因此不要爬取受版權保護的圖片,除非有明確的授權。遵守相關的版權法和智慧財產權規定。上面就是今天得全部內容,如果有不懂得,可以評論區留言討論。
來自 “ ITPUB部落格 ” ,連結:https://blog.itpub.net/70034537/viewspace-3004744/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Android 從手機相簿獲取圖片 uri 路徑 從相機獲取照片Android
- telegram髮卡機器人機器人
- Laravel 整合 Telegram Bot 機器人Laravel機器人
- 國防機器人中的精密微電機機器人
- Telegram 建立機器人併發訊息機器人
- VMware虛擬機器獲取教程虛擬機
- 應用聚類模型獲得聊天機器人語料聚類模型機器人
- 自動聊天機器人專案班 [一門課搞定聊天機器人]機器人
- 聊天平臺原始碼,通過MediaStore獲取縮圖模糊原始碼AST
- 我就獲取個時間,機器就down了
- swift 獲取控制器Swift
- TP5獲取器
- 埃森哲:聊天機器人不只會“聊天” (附下載)機器人
- 使用 LangChain 構建聊天機器人LangChain機器人
- Rasa 聊天機器人專欄(下)機器人
- Rasa 聊天機器人專欄(上)機器人
- 聊天機器人:困境與破局機器人
- 聊天機器人:困境和破局機器人
- 極客漫畫:聊天機器人機器人
- 虛擬機器網路設定 與dhcp 獲取ip虛擬機
- JS獲取照片拍攝的角度屬性,用於旋轉控制JS
- 突破技術管理,IT人中年危機變契機
- js 獲取瀏覽器核心JS瀏覽器
- 獲取Linux本機IP命令Linux
- python如何獲取本機ipPython
- 獲取組織機構樹
- android 獲取手機號碼Android
- 獲取手機外網IP
- 【API】隨機獲取圖片API隨機
- Android之獲取手機UDIDAndroid
- 蘋果手機獲取UDID蘋果
- jQuery獲取本機ip地址jQuery
- 使用websocket開發智慧聊天機器人Web機器人
- AI中臺——智慧聊天機器人平臺AI機器人
- 使用阿里雲ECS建立聊天機器人阿里機器人
- 在安卓 4.4.4 的機器上,獲取 app 冷熱啟動的資料無法獲取 WaitTime 資料安卓APPAI
- Javascript獲取伺服器時間JavaScript伺服器
- 前端獲取伺服器時間前端伺服器