Telegram 憑證監控機器人實作 EP2 - 打造自己的 TG Bot

更新 發佈閱讀 10 分鐘
raw-image

👨‍💻 簡介

今天這篇主要是帶大家快速建立屬於自己的 Telegram bot,申請 bot 的部分我會附上網址,主要完成一些跟 Bot 的簡單回覆以及設定指令等等功能。

🛠️ 使用工具

📝 功能需求

  • 輸入指令讓 TG Bot 回傳訊息
  • 接受傳入參數並進行簡單回傳
  • 設定 cronjob,固定時間回傳訊息

🎯Setup

要使用 TG Bot,可以使用 pyTelegramBotAPI 這個 Library,官網有簡單的範例可以讓我們快速上手。

  1. 輸入指令讓 TG Bot 回傳訊息

這個簡單的範例可以在你輸入 hello 時,做簡單的回傳:

import telebot

TOKEN = "your-token"

# 建立機器人
bot = telebot.TeleBot(TOKEN)

# 設定一個指令處理器,當收到指令 /hello 時觸發。
@bot.message_handler(commands=['hello'])
def hello_command(message):
# 發送一條消息到發送 /hello 指令的聊天中
bot.send_message(message, "Someone has started me!")

# 讓機器人不斷運行,等待並處理任何消息或指令。
bot.infinity_polling()

要建立指令都會需要設定 message_handler,並且需要傳入 message 參數。 這個參數代表了觸發該指令的 Telegram 消息對象,透過這個 message 對象,你可以訪問到發送指令的用戶資訊、消息內容、聊天資訊等重要資料。

底下這段程式碼印出了一些常用的資訊:

from datetime import datetime
import telebot

TOKEN = "your-bot-token"
bot = telebot.TeleBot(TOKEN)

@bot.message_handler(commands=['hello'])
def handle_hello(message):
# 初始化一個列表來保存消息的屬性資訊
info = []

# 添加基本訊息
info.append(f"訊息ID:{message.message_id}")
timestamp = datetime.fromtimestamp(message.date)
formatted_time = timestamp.strftime('%Y-%m-%d %H:%M:%S')
info.append(f"發送日期和時間:{formatted_time}")

# 檢查並添加用戶訊息
if message.from_user:
user_info = f"發送者:{message.from_user.first_name}"
if hasattr(message.from_user, 'username'):
user_info += f" (@{message.from_user.username})"
info.append(user_info)

# 檢查並添加聊天訊息
if message.chat:
chat_type = "個人聊天" if message.chat.type == "private" else "群聊"
info.append(f"聊天類型:{chat_type}")
if hasattr(message.chat, 'title'):
info.append(f"聊天標題:{message.chat.title}")

# 添加文本內容
text_content = message.text or "無文本內容"
info.append(f"訊息內容:{text_content}")

# 將訊息列表合併成一個字符串
info_str = "\n".join(info)

# 發送訊息
bot.reply_to(message, info_str)

bot.infinity_polling()

send_message 的語法如下:

bot.send_message(chat_id, text, parse_mode=None, ...)
  • chat_id:這是必須提供的參數,表示消息將被發送到的聊天的唯一標識符。每個 Telegram 聊天(無論是私聊還是群聊)都有一個唯一的 id,這個 id 可以用於指定消息的接收方。
  • text:這是你想要發送的消息文本。
  • parse_mode(可選):這個參數可以用來指定消息文本的解析模式,例如,可以設置為 MarkdownHTML 以支持不同的文本格式化選項。

這樣就算是簡單的完成機器人的接收指令了。

2. 接受傳入參數並進行簡單回傳

接下來試著讓它接受參數並在指定的群組做回傳

import telebot

TOKEN = "your-bot-token"
bot = telebot.TeleBot(TOKEN)

@bot.message_handler(commands=['hello'])
def hello_command(message):
name = message.text.split()[1] if len(message.text.split()) > 1 else "there"
bot.send_message(message.chat.id, f"Greetings {name}! I have notified the group.")

bot.infinity_polling()

這樣就可以在對話框輸入 /hello world ,參數就會被帶入到訊息裡了。

3. 設定 cronjob,固定時間回傳訊息

這裡使用scheduleLibrary,照著官方文檔設定:

import telebot
import schedule
import time

TOKEN = "your-bot-token"
bot = telebot.TeleBot(TOKEN)

TARGET_GROUP_CHAT_ID = "your-chat-id"

def send_message_to_group():
message = "大家好!" # 你想發送的消息
bot.send_message(TARGET_GROUP_CHAT_ID, message)

# 安排任務每天9點執行
schedule.every().day.at("09:00").do(send_message_to_group)
while True:
schedule.run_pending()
time.sleep(1) # 暫停一秒再檢查

這裡我使用的範例為發送訊息到特定群組,而不是接收指令。

schedule.do(job) 的語法如下:

schedule.every(10).seconds.do(function_name, function_params...)

第一個參數是你想要定時執行的函數的名稱,後面跟著的都是這個函數所需要的參數。

簡單的範例如下:

import schedule
import time

def greet(name, message):
print(f"Hi {name}, {message}")

# 安排每10秒執行一次greet函數,並傳遞兩個參數:'World' 和 'how are you today?'
schedule.every(10).seconds.do(greet, name="World", message="how are you today?")

while True:
schedule.run_pending() # 檢查並執行計劃中的任務
time.sleep(1)

這裡注意一下 while 迴圈裡的程式碼片段, schedule.run_pending() 這個方法是會去檢查是否有排程中的任務時間到了需要執行,這裡可以依照需求下去調整 sleep 的檢查間隔。

scheduler 語法如下:

# 每天的特定時間執行
schedule.every().day.at("10:30").do(job)

# 每小時執行
schedule.every().hour.do(job)

# 每10分鐘執行
schedule.every(10).minutes.do(job)

# 每周一的特定時間執行
schedule.every().monday.at("10:30").do(job)

# 每隔5秒鐘執行
schedule.every(5).seconds.do(job)

以上就是這次的設定過程,下一篇會來設定如何透過 TG Bot 接收指令查詢域名以及新增域名。

如果想看完整程式碼可以參考這裡 🔗 專案 repo –> ep2-telegram-bot

📚Reference

留言
avatar-img
留言分享你的想法!
avatar-img
Alan的開發者天地
19會員
83內容數
golang
Alan的開發者天地的其他內容
2024/09/15
本文介紹如何使用 MongoDB 的命令行工具 Mongorestore 將先前備份的資料還原到資料庫中。Mongorestore 支援資料庫的整體恢復、特定集合的恢復,以及從遠端伺服器進行恢復等功能。無論是初學者還是有經驗的使用者,都能夠快速掌握如何使用 Mongorestore 工具。
Thumbnail
2024/09/15
本文介紹如何使用 MongoDB 的命令行工具 Mongorestore 將先前備份的資料還原到資料庫中。Mongorestore 支援資料庫的整體恢復、特定集合的恢復,以及從遠端伺服器進行恢復等功能。無論是初學者還是有經驗的使用者,都能夠快速掌握如何使用 Mongorestore 工具。
Thumbnail
2024/09/08
👨‍💻簡介 在資料庫管理和系統維護中,備份是非常重要的一環。對於使用 MongoDB 的開發者和資料庫管理員來說,mongodump 是一個非常實用的命令行工具,能夠快速且輕鬆地完成資料庫的備份和恢復。無論是進行資料遷移、系統升級,還是面對突發的故障,mongodump 都能提供穩定的資料保護
Thumbnail
2024/09/08
👨‍💻簡介 在資料庫管理和系統維護中,備份是非常重要的一環。對於使用 MongoDB 的開發者和資料庫管理員來說,mongodump 是一個非常實用的命令行工具,能夠快速且輕鬆地完成資料庫的備份和恢復。無論是進行資料遷移、系統升級,還是面對突發的故障,mongodump 都能提供穩定的資料保護
Thumbnail
2024/06/20
本文介紹如何對 Telegram 憑證監控機器人的代碼進行優化,包括新增指令、讀取變數、提高可讀性和可維護性。
Thumbnail
2024/06/20
本文介紹如何對 Telegram 憑證監控機器人的代碼進行優化,包括新增指令、讀取變數、提高可讀性和可維護性。
Thumbnail
看更多
你可能也想看
Thumbnail
蝦皮分潤計畫讓我在分享旅遊文章時,也能透過推薦好物累積被動收入,貼補旅行基金。這篇文章,除了介紹計畫的操作亮點與心得,也分享我最常應用的案例:「旅行必備小物 TOP5」,包含行李鎖、免洗內衣褲、分裝瓶、折疊衣架與真空壓縮袋,幫助出國打包更輕鬆。想同時記錄旅行、分享好物又創造額外收入的你,千萬別錯過!
Thumbnail
蝦皮分潤計畫讓我在分享旅遊文章時,也能透過推薦好物累積被動收入,貼補旅行基金。這篇文章,除了介紹計畫的操作亮點與心得,也分享我最常應用的案例:「旅行必備小物 TOP5」,包含行李鎖、免洗內衣褲、分裝瓶、折疊衣架與真空壓縮袋,幫助出國打包更輕鬆。想同時記錄旅行、分享好物又創造額外收入的你,千萬別錯過!
Thumbnail
想增加被動收入?加入蝦皮分潤計畫是輕鬆上手的好方法!本文提供完整教學,包含申請流程、賺取分潤技巧,以及實際使用心得分享,助你輕鬆獲得額外收入。
Thumbnail
想增加被動收入?加入蝦皮分潤計畫是輕鬆上手的好方法!本文提供完整教學,包含申請流程、賺取分潤技巧,以及實際使用心得分享,助你輕鬆獲得額外收入。
Thumbnail
最近把Chatgpt 當成個人助理使用,好像常要用到 #Python? 資訊人出身,應該很簡單? 之前想辦法拜託好朋友找人教我一小時,知道概念,然後我還是不會操作。
Thumbnail
最近把Chatgpt 當成個人助理使用,好像常要用到 #Python? 資訊人出身,應該很簡單? 之前想辦法拜託好朋友找人教我一小時,知道概念,然後我還是不會操作。
Thumbnail
Copilot 不僅可在 Skype 上使用,現在也能在 Telegram 上使用聊天機器人,為用戶提供更便捷、高效的創作和交流體驗。
Thumbnail
Copilot 不僅可在 Skype 上使用,現在也能在 Telegram 上使用聊天機器人,為用戶提供更便捷、高效的創作和交流體驗。
Thumbnail
👨‍💻 簡介 今天這篇主要是帶大家快速建立屬於自己的 Telegram bot,申請 bot 的部分我會附上網址,請準備好之後再來開始。 🛠️ 使用工具 Python 3.9.6 TG Bot 📝 功能需求 輸入指令讓 TG Bot 回傳訊息 接受傳入參數並進行簡單回傳 設定
Thumbnail
👨‍💻 簡介 今天這篇主要是帶大家快速建立屬於自己的 Telegram bot,申請 bot 的部分我會附上網址,請準備好之後再來開始。 🛠️ 使用工具 Python 3.9.6 TG Bot 📝 功能需求 輸入指令讓 TG Bot 回傳訊息 接受傳入參數並進行簡單回傳 設定
Thumbnail
這篇文章介紹瞭如何利用生成式AI(GenAI)來提高學習效率,包括文章重點整理、完善知識體系、客製化學習回饋、提供多元觀點等方法。同時提醒使用者應注意內容的信效度,保持學術誠信,適當運用GenAI能大幅提升工作效率。
Thumbnail
這篇文章介紹瞭如何利用生成式AI(GenAI)來提高學習效率,包括文章重點整理、完善知識體系、客製化學習回饋、提供多元觀點等方法。同時提醒使用者應注意內容的信效度,保持學術誠信,適當運用GenAI能大幅提升工作效率。
Thumbnail
DeepAI 提供「聊天機器人」及「生成圖像」兩種服務,不用註冊就可以免費使用,聊天機器人有多種角色做選擇,能為你的創作和思考過程帶來新的靈感;至於圖像生成功能,也提供多種風格供你選擇,讓你每次生成的圖像都有不同的風格和特色。
Thumbnail
DeepAI 提供「聊天機器人」及「生成圖像」兩種服務,不用註冊就可以免費使用,聊天機器人有多種角色做選擇,能為你的創作和思考過程帶來新的靈感;至於圖像生成功能,也提供多種風格供你選擇,讓你每次生成的圖像都有不同的風格和特色。
Thumbnail
給出好的指令也是一門學問! 我們在業界稱為「指令工程」(Prompt Engineering),OpenAI 官方也有公布指令工程的操作資訊,但是今天我們只要學會這樣的操作方式,你可以贏過現在多數的AI使用者。
Thumbnail
給出好的指令也是一門學問! 我們在業界稱為「指令工程」(Prompt Engineering),OpenAI 官方也有公布指令工程的操作資訊,但是今天我們只要學會這樣的操作方式,你可以贏過現在多數的AI使用者。
Thumbnail
🔍 使用 AI 工具 (ChatGPT): ChatGPT 搭配 Notion 是我目前在使用的兩項主要工具,讓我能夠輕鬆地管理和組織我的工作和想法。透過 ChatGPT 的功能,我能夠更好地發想與內容創作,而 Notion 則提供了一個知識資料庫的整合,讓我能夠有效地記錄、規劃和分享各種內
Thumbnail
🔍 使用 AI 工具 (ChatGPT): ChatGPT 搭配 Notion 是我目前在使用的兩項主要工具,讓我能夠輕鬆地管理和組織我的工作和想法。透過 ChatGPT 的功能,我能夠更好地發想與內容創作,而 Notion 則提供了一個知識資料庫的整合,讓我能夠有效地記錄、規劃和分享各種內
Thumbnail
本文介紹了text-generation-webui的安裝方法和模型的選擇,包括模型的下載和擺放位置,並提供了相關的連結和建議。
Thumbnail
本文介紹了text-generation-webui的安裝方法和模型的選擇,包括模型的下載和擺放位置,並提供了相關的連結和建議。
Thumbnail
啟動從未如此簡單、輕鬆或快速! 記得我開始寫第一份電子報時,花了很長時間。 但現在不再是這樣了。 除了Logo之外,所有內容幾乎都可以在 Chat GPT 的幫助下創建完成。
Thumbnail
啟動從未如此簡單、輕鬆或快速! 記得我開始寫第一份電子報時,花了很長時間。 但現在不再是這樣了。 除了Logo之外,所有內容幾乎都可以在 Chat GPT 的幫助下創建完成。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News