2020-10-26 02:11:53 +08:00
|
|
|
|
import os
|
2020-10-26 16:08:50 +08:00
|
|
|
|
import re
|
|
|
|
|
from telegram.ext import Updater, MessageHandler, filters
|
|
|
|
|
|
2020-11-10 01:46:55 +08:00
|
|
|
|
TELEGRAM = 777000
|
|
|
|
|
GROUP = 1087968824
|
2020-10-26 02:11:53 +08:00
|
|
|
|
Filters = filters.Filters
|
2020-11-29 19:11:19 +08:00
|
|
|
|
parser = re.compile(r'^\/((?:[^ \\]|\\.)+)([ ]*)(.*)$')
|
|
|
|
|
escaping = ('\\ ', '\\ ')
|
2020-10-26 02:11:53 +08:00
|
|
|
|
|
|
|
|
|
# Docker env
|
|
|
|
|
if os.environ.get('TOKEN') and os.environ['TOKEN'] != 'X':
|
|
|
|
|
Token = os.environ['TOKEN']
|
|
|
|
|
else:
|
|
|
|
|
raise Exception('no token')
|
|
|
|
|
|
2020-10-26 16:08:50 +08:00
|
|
|
|
|
2020-11-10 01:46:55 +08:00
|
|
|
|
def get_user(msg):
|
|
|
|
|
if msg['from']['id'] == TELEGRAM:
|
|
|
|
|
return {'first_name': msg['forward_from_chat']['title'], 'id': msg['forward_from_chat']['id']}
|
|
|
|
|
elif msg['from']['id'] == GROUP:
|
|
|
|
|
return {'first_name': msg['chat']['title'], 'id': msg['chat']['id']}
|
|
|
|
|
else:
|
|
|
|
|
return msg['from']
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def get_users(msg):
|
|
|
|
|
msg_from = msg
|
|
|
|
|
if 'reply_to_message' in msg.keys():
|
|
|
|
|
msg_rpl = msg['reply_to_message']
|
|
|
|
|
else:
|
|
|
|
|
msg_rpl = msg_from.copy()
|
|
|
|
|
from_user, rpl_user = get_user(msg_from), get_user(msg_rpl)
|
|
|
|
|
if rpl_user == from_user:
|
|
|
|
|
rpl_user = {'first_name': '自己', 'id': rpl_user['id']}
|
|
|
|
|
return from_user, rpl_user
|
|
|
|
|
|
|
|
|
|
|
2020-10-26 02:11:53 +08:00
|
|
|
|
def mention(user):
|
2020-10-26 02:54:06 +08:00
|
|
|
|
space = ' '
|
2020-10-26 02:11:53 +08:00
|
|
|
|
if 'last_name' not in user:
|
|
|
|
|
user['last_name'] = ''
|
2020-10-26 02:54:06 +08:00
|
|
|
|
space = ''
|
|
|
|
|
return f"[{user['first_name']}{space}{user['last_name']}](tg://user?id={user['id']})"
|
2020-10-26 02:11:53 +08:00
|
|
|
|
|
|
|
|
|
|
2020-10-26 16:08:50 +08:00
|
|
|
|
def get_text(mention_from, mention_rpl, command):
|
2020-10-29 01:06:18 +08:00
|
|
|
|
parsed = parser.search(delUsername.sub('', command)).groups()
|
2020-11-29 19:11:19 +08:00
|
|
|
|
for escape in escaping:
|
|
|
|
|
parsed[0] = parsed[0].replace(escape, escape[1:])
|
2020-11-06 02:55:01 +08:00
|
|
|
|
if parsed[0] == 'me':
|
|
|
|
|
return f"{mention_from} {parsed[2]}!"
|
2020-11-07 22:54:07 +08:00
|
|
|
|
elif parsed[0] == 'you':
|
|
|
|
|
return f"{mention_rpl} {parsed[2]}!"
|
2020-11-06 02:55:01 +08:00
|
|
|
|
elif parsed[2]:
|
2020-10-26 16:08:50 +08:00
|
|
|
|
return f"{mention_from} {parsed[0]} {mention_rpl} {parsed[2]}!"
|
|
|
|
|
else:
|
|
|
|
|
return f"{mention_from} {parsed[0]} 了 {mention_rpl}!"
|
|
|
|
|
|
|
|
|
|
|
2020-10-26 02:11:53 +08:00
|
|
|
|
def reply(update, context):
|
2020-11-06 02:55:01 +08:00
|
|
|
|
print(update.to_dict())
|
2020-10-26 02:11:53 +08:00
|
|
|
|
msg = update.to_dict()['message']
|
2020-10-26 16:08:50 +08:00
|
|
|
|
command = msg['text']
|
2020-11-10 01:46:55 +08:00
|
|
|
|
from_user, rpl_user = get_users(msg)
|
2020-10-26 15:36:12 +08:00
|
|
|
|
|
2020-11-10 01:46:55 +08:00
|
|
|
|
mention_from, mention_rpl = mention(from_user), mention(rpl_user)
|
2020-10-26 15:36:12 +08:00
|
|
|
|
|
2020-10-26 16:08:50 +08:00
|
|
|
|
text = get_text(mention_from, mention_rpl, command)
|
2020-11-10 01:46:55 +08:00
|
|
|
|
print(text, end='\n\n')
|
2020-10-26 02:11:53 +08:00
|
|
|
|
|
2020-10-26 15:36:12 +08:00
|
|
|
|
update.effective_message.reply_text(text, parse_mode='Markdown')
|
2020-10-26 02:11:53 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
updater = Updater(token=Token, use_context=True)
|
2020-10-28 21:51:16 +08:00
|
|
|
|
delUsername = re.compile('@' + updater.bot.username, re.I)
|
2020-10-26 02:11:53 +08:00
|
|
|
|
dp = updater.dispatcher
|
2020-10-26 16:41:16 +08:00
|
|
|
|
dp.add_handler(MessageHandler(Filters.regex(parser), reply))
|
2020-10-26 02:11:53 +08:00
|
|
|
|
|
|
|
|
|
updater.start_polling()
|
|
|
|
|
updater.idle()
|