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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- telegram髮卡機器人機器人
- Android 從手機相簿獲取圖片 uri 路徑 從相機獲取照片Android
- Laravel 整合 Telegram Bot 機器人Laravel機器人
- 國防機器人中的精密微電機機器人
- Telegram 建立機器人併發訊息機器人
- Photos儲存、獲取、更改照片詳解
- VMware虛擬機器獲取教程虛擬機
- 應用聚類模型獲得聊天機器人語料聚類模型機器人
- 機器人的「語料」,如何獲取?機器人
- c#獲取機器硬體資訊C#
- VbScript獲取本地機器的硬體配置
- 自動聊天機器人專案班 [一門課搞定聊天機器人]機器人
- silverlight學習之獲取照片的路徑
- Linux6虛擬機器獲取UUIDLinux虛擬機UI
- JS獲取客戶端IP地址與機器名JS客戶端
- 埃森哲:聊天機器人不只會“聊天” (附下載)機器人
- 聊天平臺原始碼,通過MediaStore獲取縮圖模糊原始碼AST
- Rasa 聊天機器人專欄(上)機器人
- Rasa 聊天機器人專欄(下)機器人
- 聊天機器人:困境與破局機器人
- 聊天機器人:困境和破局機器人
- 極客漫畫:聊天機器人機器人
- 如何讓聊天機器人懂情感機器人
- 使用 LangChain 構建聊天機器人LangChain機器人
- 機器之魂:聊天機器人是怎麼工作的機器人
- 突破技術管理,IT人中年危機變契機
- Java獲取本機IPJava
- PHP獲取隨機數PHP隨機
- Random獲取隨機數random隨機
- swift 獲取控制器Swift
- 虛擬機器網路設定 與dhcp 獲取ip虛擬機
- JS獲取照片拍攝的角度屬性,用於旋轉控制JS
- 使用websocket開發智慧聊天機器人Web機器人
- AI中臺——智慧聊天機器人平臺AI機器人
- 智慧聊天機器人CMO的完全指南機器人
- Tensorflow搞一個聊天機器人機器人
- 獲取手機外網IP
- 蘋果手機獲取UDID蘋果