Update receive_faq.py

pull/393/head
midoks 2 years ago
parent cfa396b4bb
commit 059ce6228b
  1. 189
      plugins/tgbot/startup/extend/receive_faq.py

@ -7,6 +7,9 @@ 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
@ -31,76 +34,160 @@ def getReadCmd(cmd, msg):
return real_msg
def searchFaq(bot, message, cmd_text):
# print(search_text)
return_msg = "你正在寻找【" + cmd_text + "】答案:\n"
return_msg += "此功能还在开发中...请持续关注!\n"
bot.reply_to(message, return_msg)
return True
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 searchDebugReply(bot, message, cmd_text):
markup = types.ReplyKeyboardMarkup(row_width=2)
itembtn1 = types.KeyboardButton('a')
itembtn2 = types.KeyboardButton('v')
itembtn3 = types.KeyboardButton('d')
markup.add(itembtn1, itembtn2, itembtn3)
bot.send_message(chat_id, "Choose one letter:", reply_markup=markup)
# or add KeyboardButton one row at a time:
markup = types.ReplyKeyboardMarkup()
itembtna = types.KeyboardButton('a')
itembtnv = types.KeyboardButton('v')
itembtnc = types.KeyboardButton('c')
itembtnd = types.KeyboardButton('d')
itembtne = types.KeyboardButton('e')
markup.row(itembtna, itembtnv)
markup.row(itembtnc, itembtnd, itembtne)
bot.send_message(message.chat.id, "Choose one letter:",
reply_markup=markup)
markup = types.ReplyKeyboardRemove(selective=False)
bot.send_message(message.chat.id, message, reply_markup=markup)
# bot.reply_to(message, "http://baidu.com")
return True
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/forum-' + x['tid'] + '-1.html'
r.append(tmp)
data['data']['list'] = r
return data
def searchDebugMsgInline(bot, message, cmd_text):
button = {
"如何在安装面板?": {"callback_data": "bbs_id_1"},
"如何在安装面板2?": {"callback_data": "bbs_id_2"},
"下一页": {"callback_data": "bbs_pre"},
"上一页": {"url": "google.com"}
}
bot.reply_to(message, "Test",
reply_markup=quick_markup(button, row_width=2))
# bot.send_message(message.chat.id, "Test",reply_markup=quick_markup(button, row_width=2))
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):
searchDebugMsgInline(bot, message, cmd_text)
searchFaq(bot, message, cmd_text)
return True
def answer_callback_query(bot, call):
print(call)
bot.send_message(call.message.chat.id, "Test Callback")
# bot.answer_callback_query(call.id)
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):
print(message)
text_body = message.text
# 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 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"
@ -111,5 +198,7 @@ def run(bot, message):
if __name__ == "__main__":
print(isThisCmd('/?:', '/?:如何在安装面板'))
print(getReadCmd('/?:', '/?:如何在安装面板'))
# print(isThisCmd('/?:', '/?:如何在安装面板'))
# print(getReadCmd('/?:', '/?:如何在安装面板'))
# print(searchHttpPage('mw'))
print(getFaqKw('寻找【mw】问题如下:'))

Loading…
Cancel
Save