Commit 2b5e0cf8 authored by Weey's avatar Weey

新增推送到Telegram

parent 8a0309dd
...@@ -46,6 +46,12 @@ NOTIFICATION_VOICE_CODE_PHONE = 'your phone' # 接受通知的手机号 ...@@ -46,6 +46,12 @@ NOTIFICATION_VOICE_CODE_PHONE = 'your phone' # 接受通知的手机号
DINGTALK_ENABLED = 0 DINGTALK_ENABLED = 0
DINGTALK_WEBHOOK = 'https://oapi.dingtalk.com/robot/send?access_token=your token' DINGTALK_WEBHOOK = 'https://oapi.dingtalk.com/robot/send?access_token=your token'
# Telegram消息推送
# 打开链接关注Bot:https://t.me/notificationme_bot
# 将Bot回复给你的专属链接复制到下方,如果没有回复则发送给Bot这条信息: /start
TELEGRAM_ENABLED = 0
TELEGRAM_BOT_API_URL = 'https://tgbot.lbyczf.com/sendMessage/:your_token'
# 输出日志到文件 (Docker 中不建议修改此组配置项) # 输出日志到文件 (Docker 中不建议修改此组配置项)
OUT_PUT_LOG_TO_FILE_ENABLED = 1 OUT_PUT_LOG_TO_FILE_ENABLED = 1
OUT_PUT_LOG_TO_FILE_PATH = '/config/12306.log' # 日志目录 OUT_PUT_LOG_TO_FILE_PATH = '/config/12306.log' # 日志目录
......
...@@ -46,6 +46,12 @@ NOTIFICATION_VOICE_CODE_PHONE = 'your phone' # 接受通知的手机号 ...@@ -46,6 +46,12 @@ NOTIFICATION_VOICE_CODE_PHONE = 'your phone' # 接受通知的手机号
DINGTALK_ENABLED = 0 DINGTALK_ENABLED = 0
DINGTALK_WEBHOOK = 'https://oapi.dingtalk.com/robot/send?access_token=your token' DINGTALK_WEBHOOK = 'https://oapi.dingtalk.com/robot/send?access_token=your token'
# Telegram消息推送
# 打开链接关注Bot:https://t.me/notificationme_bot
# 将Bot回复给你的专属链接复制到下方,如果没有回复则发送给Bot这条信息: /start
TELEGRAM_ENABLED = 0
TELEGRAM_BOT_API_URL = 'https://tgbot.lbyczf.com/sendMessage/:your_token'
# 输出日志到文件 # 输出日志到文件
OUT_PUT_LOG_TO_FILE_ENABLED = 0 OUT_PUT_LOG_TO_FILE_ENABLED = 0
OUT_PUT_LOG_TO_FILE_PATH = 'runtime/12306.log' # 日志目录 OUT_PUT_LOG_TO_FILE_PATH = 'runtime/12306.log' # 日志目录
......
...@@ -113,6 +113,10 @@ class App: ...@@ -113,6 +113,10 @@ class App:
CommonLog.add_quick_log(CommonLog.MESSAGE_TEST_SEND_DINGTALK).flush() CommonLog.add_quick_log(CommonLog.MESSAGE_TEST_SEND_DINGTALK).flush()
Notification.dingtalk_webhook('测试发送信息') Notification.dingtalk_webhook('测试发送信息')
if Config().TELEGRAM_ENABLED: # Telegram通知
CommonLog.add_quick_log(CommonLog.MESSAGE_TEST_SEND_TELEGRAM).flush()
Notification.send_to_telegram('测试发送信息')
@classmethod @classmethod
def run_check(cls): def run_check(cls):
""" """
......
...@@ -58,6 +58,10 @@ class Config: ...@@ -58,6 +58,10 @@ class Config:
DINGTALK_ENABLED = 0 DINGTALK_ENABLED = 0
DINGTALK_WEBHOOK = '' DINGTALK_WEBHOOK = ''
# Telegram推送配置
TELEGRAM_ENABLED = 0
TELEGRAM_BOT_API_URL = ''
# 邮箱配置 # 邮箱配置
EMAIL_ENABLED = 0 EMAIL_ENABLED = 0
EMAIL_SENDER = '' EMAIL_SENDER = ''
......
...@@ -30,6 +30,11 @@ class Notification(): ...@@ -30,6 +30,11 @@ class Notification():
self = cls() self = cls()
self.send_email_by_smtp(to, title, content) self.send_email_by_smtp(to, title, content)
@classmethod
def send_to_telegram(cls, content=''):
self = cls()
self.send_to_telegram_bot(content=content)
def send_voice_code_of_yiyuan(self, phone, name='', content=''): def send_voice_code_of_yiyuan(self, phone, name='', content=''):
""" """
发送语音验证码 发送语音验证码
...@@ -82,13 +87,29 @@ class Notification(): ...@@ -82,13 +87,29 @@ class Notification():
except Exception as e: except Exception as e:
CommonLog.add_quick_log(CommonLog.MESSAGE_SEND_EMAIL_FAIL.format(e)).flush() CommonLog.add_quick_log(CommonLog.MESSAGE_SEND_EMAIL_FAIL.format(e)).flush()
def send_dingtalk_by_webbook(self,content): def send_dingtalk_by_webbook(self, content):
from dingtalkchatbot.chatbot import DingtalkChatbot from dingtalkchatbot.chatbot import DingtalkChatbot
webhook = Config().DINGTALK_WEBHOOK webhook = Config().DINGTALK_WEBHOOK
dingtalk = DingtalkChatbot(webhook) dingtalk = DingtalkChatbot(webhook)
dingtalk.send_text(msg=content, is_at_all=True) dingtalk.send_text(msg=content, is_at_all=True)
pass pass
def send_to_telegram_bot(self, content):
bot_api_url = Config().TELEGRAM_BOT_API_URL
if not bot_api_url:
return False
data = {
'text': content
}
response = self.session.request(url=bot_api_url, method='POST', data=data)
result = response.json().get('result')
response_status = result.get('statusCode')
if response_status == 200:
CommonLog.add_quick_log(CommonLog.MESSAGE_SEND_TELEGRAM_SUCCESS).flush()
else:
response_error_message = result.get('description')
CommonLog.add_quick_log(CommonLog.MESSAGE_SEND_TELEGRAM_FAIL.format(response_error_message)).flush()
if __name__ == '__main__': if __name__ == '__main__':
name = '张三4' name = '张三4'
......
...@@ -24,6 +24,7 @@ class CommonLog(BaseLog): ...@@ -24,6 +24,7 @@ class CommonLog(BaseLog):
MESSAGE_TEST_SEND_VOICE_CODE = '正在测试发送语音验证码...' MESSAGE_TEST_SEND_VOICE_CODE = '正在测试发送语音验证码...'
MESSAGE_TEST_SEND_EMAIL = '正在测试发送邮件...' MESSAGE_TEST_SEND_EMAIL = '正在测试发送邮件...'
MESSAGE_TEST_SEND_DINGTALK = '正在测试发送钉钉消息...' MESSAGE_TEST_SEND_DINGTALK = '正在测试发送钉钉消息...'
MESSAGE_TEST_SEND_TELEGRAM = '正在测试推送到Telegram...'
MESSAGE_CONFIG_FILE_DID_CHANGED = '配置文件已修改,正在重新加载中\n' MESSAGE_CONFIG_FILE_DID_CHANGED = '配置文件已修改,正在重新加载中\n'
MESSAGE_API_RESPONSE_CAN_NOT_BE_HANDLE = '接口返回错误' MESSAGE_API_RESPONSE_CAN_NOT_BE_HANDLE = '接口返回错误'
...@@ -31,6 +32,9 @@ class CommonLog(BaseLog): ...@@ -31,6 +32,9 @@ class CommonLog(BaseLog):
MESSAGE_SEND_EMAIL_SUCCESS = '邮件发送成功,请检查收件箱' MESSAGE_SEND_EMAIL_SUCCESS = '邮件发送成功,请检查收件箱'
MESSAGE_SEND_EMAIL_FAIL = '邮件发送失败,请手动检查配置,错误原因 {}' MESSAGE_SEND_EMAIL_FAIL = '邮件发送失败,请手动检查配置,错误原因 {}'
MESSAGE_SEND_TELEGRAM_SUCCESS = 'Telegram推送成功'
MESSAGE_SEND_TELEGRAM_FAIL = 'Telegram推送失败,错误原因 {}'
MESSAGE_OUTPUT_TO_FILE_IS_UN_ENABLE = '请先打开配置:输出到文件' MESSAGE_OUTPUT_TO_FILE_IS_UN_ENABLE = '请先打开配置:输出到文件'
MESSAGE_GET_RESPONSE_FROM_FREE_AUTO_CODE = '从免费打码获取结果失败' MESSAGE_GET_RESPONSE_FROM_FREE_AUTO_CODE = '从免费打码获取结果失败'
...@@ -72,6 +76,7 @@ class CommonLog(BaseLog): ...@@ -72,6 +76,7 @@ class CommonLog(BaseLog):
'语音验证码: {}'.format(get_true_false_text(Config().NOTIFICATION_BY_VOICE_CODE, enable, disable))) '语音验证码: {}'.format(get_true_false_text(Config().NOTIFICATION_BY_VOICE_CODE, enable, disable)))
self.add_quick_log('邮件通知: {}'.format(get_true_false_text(Config().EMAIL_ENABLED, enable, disable))) self.add_quick_log('邮件通知: {}'.format(get_true_false_text(Config().EMAIL_ENABLED, enable, disable)))
self.add_quick_log('钉钉通知: {}'.format(get_true_false_text(Config().DINGTALK_ENABLED, enable, disable))) self.add_quick_log('钉钉通知: {}'.format(get_true_false_text(Config().DINGTALK_ENABLED, enable, disable)))
self.add_quick_log('Telegram通知: {}'.format(get_true_false_text(Config().TELEGRAM_ENABLED, enable, disable)))
self.add_quick_log('查询间隔: {} 秒'.format(Config().QUERY_INTERVAL)) self.add_quick_log('查询间隔: {} 秒'.format(Config().QUERY_INTERVAL))
self.add_quick_log('用户心跳检测间隔: {} 秒'.format(Config().USER_HEARTBEAT_INTERVAL)) self.add_quick_log('用户心跳检测间隔: {} 秒'.format(Config().USER_HEARTBEAT_INTERVAL))
self.add_quick_log('WEB 管理页面: {}'.format(get_true_false_text(Config().WEB_ENABLE, enable, disable))) self.add_quick_log('WEB 管理页面: {}'.format(get_true_false_text(Config().WEB_ENABLE, enable, disable)))
......
...@@ -84,6 +84,9 @@ class Order: ...@@ -84,6 +84,9 @@ class Order:
OrderLog.MESSAGE_ORDER_SUCCESS_NOTIFICATION_OF_EMAIL_CONTENT.format(self.order_id)) OrderLog.MESSAGE_ORDER_SUCCESS_NOTIFICATION_OF_EMAIL_CONTENT.format(self.order_id))
if Config().DINGTALK_ENABLED: # 钉钉通知 if Config().DINGTALK_ENABLED: # 钉钉通知
Notification.dingtalk_webhook(OrderLog.MESSAGE_ORDER_SUCCESS_NOTIFICATION_OF_EMAIL_CONTENT.format(self.order_id)) Notification.dingtalk_webhook(OrderLog.MESSAGE_ORDER_SUCCESS_NOTIFICATION_OF_EMAIL_CONTENT.format(self.order_id))
if Config().TELEGRAM_ENABLED: # Telegram推送
Notification.send_to_telegram(
OrderLog.MESSAGE_ORDER_SUCCESS_NOTIFICATION_OF_EMAIL_CONTENT.format(self.order_id))
while sustain_time: # TODO 后面直接查询有没有待支付的订单就可以 while sustain_time: # TODO 后面直接查询有没有待支付的订单就可以
num += 1 num += 1
if Config().NOTIFICATION_BY_VOICE_CODE: # 语音通知 if Config().NOTIFICATION_BY_VOICE_CODE: # 语音通知
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment