mirror of https://github.com/midoks/mdserver-web
pull/405/head
parent
4366c4afde
commit
ed6df6d527
@ -0,0 +1,27 @@ |
|||||||
|
import sys |
||||||
|
import io |
||||||
|
import os |
||||||
|
import time |
||||||
|
import re |
||||||
|
import json |
||||||
|
import base64 |
||||||
|
import threading |
||||||
|
|
||||||
|
sys.path.append(os.getcwd() + "/class/core") |
||||||
|
import mw |
||||||
|
|
||||||
|
import telebot |
||||||
|
from telebot import types |
||||||
|
from telebot.util import quick_markup |
||||||
|
|
||||||
|
|
||||||
|
def run(client): |
||||||
|
print(client) |
||||||
|
return '' |
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__": |
||||||
|
# print(isThisCmd('/?:', '/?:如何在安装面板')) |
||||||
|
# print(getReadCmd('/?:', '/?:如何在安装面板')) |
||||||
|
# print(searchHttpPage('mw')) |
||||||
|
print(getFaqKw('寻找【mw】问题如下:')) |
@ -1,220 +0,0 @@ |
|||||||
import sys |
|
||||||
import io |
|
||||||
import os |
|
||||||
import time |
|
||||||
import re |
|
||||||
import json |
|
||||||
import base64 |
|
||||||
import threading |
|
||||||
|
|
||||||
sys.path.append(os.getcwd() + "/class/core") |
|
||||||
import mw |
|
||||||
|
|
||||||
import telebot |
|
||||||
from telebot import types |
|
||||||
from telebot.util import quick_markup |
|
||||||
|
|
||||||
|
|
||||||
def isThisCmd(cmd, msg): |
|
||||||
clen = len(cmd) |
|
||||||
msg_len = len(msg) |
|
||||||
if msg_len < clen: |
|
||||||
return False |
|
||||||
|
|
||||||
check_msg = msg[0:clen] |
|
||||||
if cmd == check_msg: |
|
||||||
return True |
|
||||||
return False |
|
||||||
|
|
||||||
|
|
||||||
def getReadCmd(cmd, msg): |
|
||||||
clen = len(cmd) |
|
||||||
msg_len = len(msg) |
|
||||||
real_msg = msg[clen:] |
|
||||||
return real_msg |
|
||||||
|
|
||||||
|
|
||||||
def getFaqKw(cmd): |
|
||||||
matchObj = re.match(r'寻找【(.*?)】问题如下', cmd, re.M | re.I) |
|
||||||
data = matchObj.groups() |
|
||||||
if len(data) > 0: |
|
||||||
return True, data[0] |
|
||||||
return False, '' |
|
||||||
|
|
||||||
|
|
||||||
def searchHttpPage(kw='', p=1, size=1): |
|
||||||
import urllib |
|
||||||
kw = kw.strip() |
|
||||||
kw = urllib.parse.quote_plus(kw) |
|
||||||
|
|
||||||
api = 'https://bbs.midoks.me/plugin.php?id=external_api&f=bbs_search&q=' + kw + \ |
|
||||||
'&size=' + str(size) + '&p=' + str(p) |
|
||||||
|
|
||||||
# print('url', api) |
|
||||||
data = mw.httpGet(api) |
|
||||||
# print(data) |
|
||||||
data = json.loads(data) |
|
||||||
# print(data) |
|
||||||
if data['code'] > -1: |
|
||||||
|
|
||||||
alist = data['data']['list'] |
|
||||||
r = [] |
|
||||||
for x in alist: |
|
||||||
tmp = {} |
|
||||||
tmp['tid'] = x['tid'] |
|
||||||
tmp['subject'] = x['subject'] |
|
||||||
tmp['url'] = 'https://bbs.midoks.me/thread-' + \ |
|
||||||
x['tid'] + '-1-1.html' |
|
||||||
r.append(tmp) |
|
||||||
data['data']['list'] = r |
|
||||||
return data |
|
||||||
|
|
||||||
|
|
||||||
def searchFaq(bot, message, cmd_text): |
|
||||||
# cmd_text = 'mw' |
|
||||||
data = searchHttpPage(cmd_text, 1, 5) |
|
||||||
if data['code'] == 0 and len(data['data']['list']) > 0: |
|
||||||
keyboard = [] |
|
||||||
|
|
||||||
dlist = data['data']['list'] |
|
||||||
for x in dlist: |
|
||||||
keyboard.append([types.InlineKeyboardButton( |
|
||||||
text=x['subject'], url=x['url'])]) |
|
||||||
|
|
||||||
keyboard.append([ |
|
||||||
types.InlineKeyboardButton( |
|
||||||
text="下一页", callback_data='bbs_next_page_2'), |
|
||||||
types.InlineKeyboardButton( |
|
||||||
text="第" + str(data['data']['p']) + "页,共" + str(data['data']['page_num']) + "页", callback_data='bbs_page_total') |
|
||||||
]) |
|
||||||
|
|
||||||
keyboard.append([types.InlineKeyboardButton( |
|
||||||
text="关闭消息", callback_data='bbs_search_close')]) |
|
||||||
|
|
||||||
# print(keyboard) |
|
||||||
markup = types.InlineKeyboardMarkup(keyboard) |
|
||||||
bot.send_message(message.chat.id, "寻找【" + |
|
||||||
cmd_text.strip() + "】问题如下:", reply_markup=markup) |
|
||||||
else: |
|
||||||
keyboard = [ |
|
||||||
[ |
|
||||||
types.InlineKeyboardButton( |
|
||||||
text="论坛", url='https://bbs.midoks.me'), |
|
||||||
types.InlineKeyboardButton( |
|
||||||
text="搜索", url='https://bbs.midoks.me/search.php') |
|
||||||
], |
|
||||||
[ |
|
||||||
types.InlineKeyboardButton( |
|
||||||
text="关闭消息", callback_data='bbs_search_close') |
|
||||||
] |
|
||||||
|
|
||||||
] |
|
||||||
markup = types.InlineKeyboardMarkup(keyboard) |
|
||||||
bot.send_message( |
|
||||||
message.chat.id, "未找到合适内容,请在官方论坛[bbs.midoks.me]提问!", reply_markup=markup) |
|
||||||
|
|
||||||
return True |
|
||||||
|
|
||||||
|
|
||||||
def searchDebug(bot, message, cmd_text): |
|
||||||
searchFaq(bot, message, cmd_text) |
|
||||||
return True |
|
||||||
|
|
||||||
|
|
||||||
def answer_callback_query(bot, call): |
|
||||||
|
|
||||||
keyword = call.data |
|
||||||
|
|
||||||
if keyword == 'bbs_search_close': |
|
||||||
bot.delete_message(chat_id=call.message.chat.id, |
|
||||||
message_id=call.message.message_id) |
|
||||||
return |
|
||||||
|
|
||||||
is_bbs_page = False |
|
||||||
p = 1 |
|
||||||
if keyword.startswith('bbs_next_page'): |
|
||||||
is_bbs_page = True |
|
||||||
p = keyword.replace('bbs_next_page_', '') |
|
||||||
|
|
||||||
if keyword.startswith('bbs_pre_page'): |
|
||||||
is_bbs_page = True |
|
||||||
p = keyword.replace('bbs_pre_page_', '') |
|
||||||
|
|
||||||
# print("p", p) |
|
||||||
if is_bbs_page: |
|
||||||
is_match, cmd_text = getFaqKw(call.message.text) |
|
||||||
if not is_match: |
|
||||||
bot.edit_message_text( |
|
||||||
chat_id=call.message.chat.id, message_id=call.message.message_id, text="出现错误!") |
|
||||||
return |
|
||||||
|
|
||||||
data = searchHttpPage(cmd_text, int(p), 5) |
|
||||||
|
|
||||||
dlist = data['data']['list'] |
|
||||||
# print(data) |
|
||||||
keyboard = [] |
|
||||||
for x in dlist: |
|
||||||
keyboard.append([types.InlineKeyboardButton( |
|
||||||
text=x['subject'], url=x['url'])]) |
|
||||||
|
|
||||||
page_nav = [] |
|
||||||
if int(data['data']['p']) > 1: |
|
||||||
page_nav.append(types.InlineKeyboardButton( |
|
||||||
text="上一页", callback_data='bbs_pre_page_' + str(int(p) - 1))) |
|
||||||
|
|
||||||
if data['data']['page_num'] != data['data']['p']: |
|
||||||
page_nav.append(types.InlineKeyboardButton( |
|
||||||
text="下一页", callback_data='bbs_next_page_' + str(int(p) + 1))) |
|
||||||
|
|
||||||
page_nav.append(types.InlineKeyboardButton( |
|
||||||
text="第" + str(data['data']['p']) + "页,共" + str(data['data']['page_num']) + "页", callback_data='bbs_page_total')) |
|
||||||
|
|
||||||
keyboard.append(page_nav) |
|
||||||
|
|
||||||
keyboard.append([types.InlineKeyboardButton( |
|
||||||
text="关闭消息", callback_data='bbs_search_close')]) |
|
||||||
|
|
||||||
markup = types.InlineKeyboardMarkup(keyboard) |
|
||||||
bot.edit_message_text(chat_id=call.message.chat.id, message_id=call.message.message_id, |
|
||||||
text=call.message.text, reply_markup=markup) |
|
||||||
|
|
||||||
|
|
||||||
def run(bot, message): |
|
||||||
text_body = message.text |
|
||||||
|
|
||||||
# 过滤URL |
|
||||||
is_has_url = re.search( |
|
||||||
'(https?|ftp|file)://[-A-Za-z0-9+&@#/%?=~_|!:,.;]+[-A-Za-z0-9+&@#/%=~_|]', text_body) |
|
||||||
if is_has_url: |
|
||||||
return bot |
|
||||||
|
|
||||||
# print(text_body) |
|
||||||
if isThisCmd('/faq:', text_body): |
|
||||||
cmd_text = getReadCmd('/faq:', text_body) |
|
||||||
return searchFaq(bot, message, cmd_text) |
|
||||||
|
|
||||||
# if isThisCmd('/debug', text_body): |
|
||||||
# cmd_text = getReadCmd('/debug', text_body) |
|
||||||
# return searchDebug(bot, message, cmd_text) |
|
||||||
|
|
||||||
if text_body.find('?') > -1 or text_body.find('?') > -1: |
|
||||||
return_msg = "你似乎在寻找【" + text_body + "】答案:\n" |
|
||||||
return_msg += "/faq:开始寻找你的问题\n" |
|
||||||
keyboard = [ |
|
||||||
[ |
|
||||||
types.InlineKeyboardButton( |
|
||||||
text="如未找到,可以在论坛补充你的提问!", url='https://bbs.midoks.me'), |
|
||||||
] |
|
||||||
|
|
||||||
] |
|
||||||
markup = types.InlineKeyboardMarkup(keyboard) |
|
||||||
bot.reply_to(message, return_msg, reply_markup=markup) |
|
||||||
|
|
||||||
return bot |
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__": |
|
||||||
# print(isThisCmd('/?:', '/?:如何在安装面板')) |
|
||||||
# print(getReadCmd('/?:', '/?:如何在安装面板')) |
|
||||||
# print(searchHttpPage('mw')) |
|
||||||
print(getFaqKw('寻找【mw】问题如下:')) |
|
Loading…
Reference in new issue