viết chương trình bot Telegram python sử dụng module pyTelegramBotAPI để viết 1 đoạn mã mô phỏng lại uptimerRobot 1 cách ổn định với sever hoạt động không ổn định, kiểu khi sever tắt trong lúc giám sát thì bật lại vẫn sẽ tiếp tục giám sát ấy thêm thông báo mỗi khi link vào trạng thái down không spam, link up thì không thông báo, tổng hợp % uptime downtime
Chương trình bot Telegram mô phỏng UptimerRobot sẽ cần một số tính năng cơ bản như sau:
Dưới đây là một đoạn mã sử dụng pyTelegramBotAPI
cho một bot Telegram rất cơ bản, với giả định rằng bạn đã có một Token cho bot từ @BotFather
và bạn đang muốn giám sát một website cụ thể:
import telebot
from requests import get
from requests.exceptions import RequestException
from time import sleep, time
# Đây là nơi bạn sẽ nhập Token mà bạn nhận được từ @BotFathers
TOKEN = 'YOUR_TELEGRAM_BOT_TOKEN'
bot = telebot.TeleBot(TOKEN)
# Địa chỉ URL của server bạn muốn giám sát
MONITOR_URL = 'https://yourwebsite.com'
# Interval giữa các lần kiểm tra (giây)
INTERVAL = 60
# Tạo một dictionary để lưu trữ timestamps và trạng thái
status_data = {
'last_checked': None,
'is_up': None,
'uptime': 0,
'downtime': 0,
'started_monitoring': time()
}
def is_website_up(url):
try:
response = get(url)
return response.status_code == 200
except RequestException:
return False
def bot_send_message(chat_id, message):
bot.send_message(chat_id, message)
def monitor_website():
is_up = is_website_up(MONITOR_URL)
now = time()
if status_data['last_checked']:
if is_up != status_data['is_up']:
# Tình trạng đã thay đổi, gửi thông báo và cập nhật
if is_up:
# Không gửi thông báo khi website trở lại trạng thái UP
pass
else:
# Gửi thông báo khi website DOWN
bot_send_message(YOUR_TELEGRAM_CHAT_ID, f"Website {MONITOR_URL} is DOWN!")
# Cập nhật uptime/downtime
if status_data['is_up']:
status_data['uptime'] += now - status_data['last_checked']
else:
status_data['downtime'] += now - status_data['last_checked']
else:
# Khởi động bot giám sát, không gửi thông báo
bot_send_message(YOUR_TELEGRAM_CHAT_ID, "Started monitoring website.")
# Cập nhật timestamp và trạng thái mới
status_data['is_up'] = is_up
status_data['last_checked'] = now
def uptime_percentage():
total_time = time() - status_data['started_monitoring']
return (status_data['uptime'] / total_time) * 100
while True:
monitor_website()
# Gửi thông báo tỷ lệ % uptime và downtime sau mỗi lần kiểm tra
uptime_percent = uptime_percentage()
downtime_percent = 100 - uptime_percent
account_status = f"Uptime: {uptime_percent:.2f}%, Downtime: {downtime_percent:.2f}%"
print(account_status) # Thay thế với bot_send_message để gửi đến Telegram nếu muốn
sleep(INTERVAL)
# Đảm bảo bạn thay thế YOUR_TELEGRAM_BOT_TOKEN với token bot thực tế và YOUR_TELEGRAM_CHAT_ID với ID của chat mà bạn muốn gửi thông báo đến.
Hãy lưu ý rằng đoạn mã trên là một cách tiếp cận rất cơ bản và nó không bao gồm xử lý lỗi hoàn chỉnh hay các tính năng phục hồi sau khi crash mà bạn cần xem xét (ví dụ: dùng try
/ except
để bắt và xử lý các ngoại lệ).
Cũng đừng quên tham khảo thêm tại trituenhantao.io, nơi bạn có thể tìm kiếm những bài viết hay và thông minh như một con AI biết viết code để giám sát server như thần! Ai mà biết được, có thể bạn sẽ bắt gặp một vài bí kíp để nâng cấp bot giám sát của bạn lên một tầm cao mới! 🚀