mdserver-web/plugins/tgbot/startup/tgbot.py

151 lines
3.5 KiB
Python
Raw Permalink Normal View History

# coding:utf-8
import sys
import io
import os
import time
import re
import json
import base64
2023-03-09 06:11:51 -05:00
import threading
2024-12-01 13:33:32 -05:00
web_dir = os.getcwd() + "/web"
if os.path.exists(web_dir):
sys.path.append(web_dir)
os.chdir(web_dir)
import core.mw as mw
import telebot
def getPluginName():
return 'tgbot'
def getPluginDir():
return mw.getPluginDir() + '/' + getPluginName()
def getServerDir():
return mw.getServerDir() + '/' + getPluginName()
2023-03-13 12:09:30 -04:00
sys.path.append(getServerDir() + "/extend")
def getConfigData():
cfg_path = getServerDir() + "/data.cfg"
if not os.path.exists(cfg_path):
mw.writeFile(cfg_path, '{}')
t = mw.readFile(cfg_path)
return json.loads(t)
def writeConf(data):
cfg_path = getServerDir() + "/data.cfg"
mw.writeFile(cfg_path, json.dumps(data))
return True
2023-03-06 03:49:42 -05:00
2023-03-13 12:09:30 -04:00
def getExtCfg():
cfg_path = getServerDir() + "/extend.cfg"
if not os.path.exists(cfg_path):
mw.writeFile(cfg_path, '{}')
t = mw.readFile(cfg_path)
return json.loads(t)
def getStartExtCfgByTag(tag='push'):
# 获取开启的扩展
elist = getExtCfg()
rlist = []
for x in elist:
if x['tag'] == tag and x['status'] == 'start':
rlist.append(x)
return rlist
2023-03-06 03:49:42 -05:00
def writeLog(log_str):
if __name__ == "__main__":
print(log_str)
2023-03-13 13:54:08 -04:00
now = mw.getDateFromNow()
2023-03-06 03:49:42 -05:00
log_file = getServerDir() + '/task.log'
2023-03-13 13:54:08 -04:00
mw.writeFileLog(now + ':' + log_str, log_file, limit_size=5 * 1024)
2023-03-06 03:49:42 -05:00
return True
# start tgbot
cfg = getConfigData()
2023-03-06 03:39:27 -05:00
while True:
cfg = getConfigData()
if 'bot' in cfg and 'app_token' in cfg['bot']:
if cfg['bot']['app_token'] != '' and cfg['bot']['app_token'] != 'app_token':
break
2023-03-06 03:49:42 -05:00
writeLog('等待输入配置,填写app_token')
2023-03-06 03:39:27 -05:00
time.sleep(3)
2023-03-13 12:09:30 -04:00
bot = telebot.TeleBot(cfg['bot']['app_token'])
2023-03-16 03:30:43 -04:00
init_list = getStartExtCfgByTag('init')
for p in init_list:
try:
script = p['name'].split('.')[0]
__import__(script).init(bot)
except Exception as e:
writeLog('-----init error start -------')
writeLog(mw.getTracebackInfo())
writeLog('-----init error end -------')
2023-03-11 09:42:39 -05:00
2023-03-09 04:23:28 -05:00
2023-03-13 12:15:27 -04:00
@bot.message_handler(commands=['chat_id'])
def hanle_get_chat_id(message):
bot.reply_to(message, message.chat.id)
2023-03-09 04:23:28 -05:00
2023-03-09 06:11:51 -05:00
@bot.message_handler(func=lambda message: True)
2023-03-13 12:09:30 -04:00
def all_message(message):
rlist = getStartExtCfgByTag('receive')
for r in rlist:
try:
script = r['name'].split('.')[0]
__import__(script).run(bot, message)
except Exception as e:
2023-03-13 13:10:04 -04:00
writeLog('-----all_message error start -------')
writeLog(mw.getTracebackInfo())
writeLog('-----all_message error end -------')
2023-03-13 12:09:30 -04:00
2023-03-14 03:21:33 -04:00
@bot.callback_query_handler(func=lambda call: True)
def callback_query_handler(call):
rlist = getStartExtCfgByTag('receive')
for r in rlist:
try:
script = r['name'].split('.')[0]
__import__(script).answer_callback_query(bot, call)
except Exception as e:
writeLog('-----callback_query_handler error start -------')
writeLog(mw.getTracebackInfo())
writeLog('-----callback_query_handler error end -------')
2023-03-28 04:31:46 -04:00
def runBot(bot):
try:
bot.polling()
except Exception as e:
writeLog('-----runBot error start -------')
writeLog(str(e))
writeLog('-----runBot error end -------')
time.sleep(1)
runBot(bot)
2023-03-09 06:11:51 -05:00
if __name__ == "__main__":
writeLog('启动成功')
2023-03-28 04:31:46 -04:00
runBot(bot)
# asyncio.run(bot.polling())