0.0.12-fixes
This commit is contained in:
@@ -3,8 +3,8 @@ from bot.handlers.send_button import show_request_msg
|
||||
from bot.api import get_member
|
||||
|
||||
def handle_command_ask(msg):
|
||||
print(f'handling request resend')
|
||||
cmd, chat_id, member_id = msg['text'].split(' ')
|
||||
print('handling request resend')
|
||||
_cmd, chat_id, member_id = msg['text'].split(' ')
|
||||
chat_id = chat_id.replace('-', '-100')
|
||||
r = get_member(chat_id, member_id)
|
||||
print(r)
|
||||
|
@@ -14,23 +14,33 @@ def construct_unlink_buttons(actor):
|
||||
'text': f'{identity} {username}',
|
||||
'callback_data': 'unlink' + vouch
|
||||
})
|
||||
return { "inline_keyboard": [ buttons, ] }
|
||||
return buttons
|
||||
|
||||
|
||||
def handle_command_my(msg):
|
||||
print(f'handle my command')
|
||||
def handle_command_my(msg, state):
|
||||
print('handle my command')
|
||||
from_id = str(msg['from']['id'])
|
||||
sender = Profile.get(from_id, msg)
|
||||
|
||||
handle_command_owner_my(msg)
|
||||
|
||||
# генерируем кнопки для всех, за кого поручились
|
||||
reply_markup = construct_unlink_buttons(sender)
|
||||
|
||||
if msg['from'].get('language_code', 'ru') == 'ru':
|
||||
body = 'Нажмите кнопки ниже, чтобы удалить ваши связи'
|
||||
buttons = construct_unlink_buttons(sender)
|
||||
reply_markup = { "inline_keyboard": [ buttons, ] }
|
||||
if len(buttons) == 0:
|
||||
if msg['from'].get('language_code', 'ru') == 'ru':
|
||||
body = 'Вас ещё никто не узнал? Напишите, я передам нашему кругу'
|
||||
else:
|
||||
body = 'Nobody recognized you? Speak, I will pass your message to the circle'
|
||||
r = send_message(from_id, body)
|
||||
print(r)
|
||||
chat_id = msg['chat']['id']
|
||||
state.make_talking(from_id, chat_id)
|
||||
else:
|
||||
body = 'Unlink your connections pressing the buttons below'
|
||||
if msg['from'].get('language_code', 'ru') == 'ru':
|
||||
body = 'Нажмите кнопки ниже, чтобы удалить ваши связи'
|
||||
else:
|
||||
body = 'Unlink your connections pressing the buttons below'
|
||||
|
||||
r = send_message(from_id, body, reply_markup=reply_markup)
|
||||
print(r)
|
||||
@@ -47,7 +57,7 @@ def handle_command_owner_my(msg):
|
||||
break
|
||||
if owner_id:
|
||||
owner = Profile.get(owner_id, msg)
|
||||
uids, members = scan()
|
||||
_uids, members = scan()
|
||||
for mdata in members:
|
||||
m = json.loads(mdata.decode('utf-8'))
|
||||
if owner_id in m['parents']:
|
||||
|
@@ -3,20 +3,21 @@ from bot.storage import Profile, storage
|
||||
from bot.handlers.send_button import show_request_msg
|
||||
|
||||
def handle_default(msg):
|
||||
print(f'default handler for all messages')
|
||||
print('default handler for all messages')
|
||||
chat_id = str(msg['chat']['id'])
|
||||
from_id = str(msg['from']['id'])
|
||||
sender = Profile.get(from_id, msg)
|
||||
|
||||
if msg['text'].startswith('/my'):
|
||||
# команда в групповом чате
|
||||
print(f'remove some messages in group chat')
|
||||
print('remove some messages in group chat')
|
||||
|
||||
# удалить сообщение с командой /my
|
||||
r = delete_message(chat_id, msg['message_id'])
|
||||
print(r)
|
||||
|
||||
# показать новое сообщение с кнопкой
|
||||
# для дополнительного поручения
|
||||
show_request_msg(msg)
|
||||
else:
|
||||
# любое другое сообщение
|
||||
|
@@ -7,21 +7,28 @@ from bot.storage import storage, Profile
|
||||
from bot.config import FEEDBACK_CHAT_ID
|
||||
|
||||
|
||||
def handle_feedback(msg):
|
||||
def handle_feedback(msg, state):
|
||||
mid = msg['message_id']
|
||||
cid = msg['chat']['id']
|
||||
if msg['text'] == '/start':
|
||||
r = send_message(cid, 'Напишите своё сообщение для администрации чата')
|
||||
print(r)
|
||||
else:
|
||||
r = forward_message(cid, mid, FEEDBACK_CHAT_ID)
|
||||
support_msg_id = r['result']['message_id']
|
||||
# сохранение айди сообщения в приватной переписке с ботом
|
||||
storage.set(f'fbk-{support_msg_id}', json.dumps({
|
||||
"author_id": msg["from"]["id"],
|
||||
"message_id": mid,
|
||||
"chat_id": cid
|
||||
}))
|
||||
uid = msg['from']['id']
|
||||
if state.is_talking(uid):
|
||||
r = forward_message(cid, mid, state.talking[uid])
|
||||
print(r)
|
||||
state.aho(uid)
|
||||
else:
|
||||
r = forward_message(cid, mid, FEEDBACK_CHAT_ID)
|
||||
print(r)
|
||||
support_msg_id = r['result']['message_id']
|
||||
# сохранение айди сообщения в приватной переписке с ботом
|
||||
storage.set(f'fbk-{support_msg_id}', json.dumps({
|
||||
"author_id": msg["from"]["id"],
|
||||
"message_id": mid,
|
||||
"chat_id": cid
|
||||
}))
|
||||
|
||||
|
||||
|
||||
@@ -37,7 +44,7 @@ def handle_answer(msg):
|
||||
# получение сохраненного информации о сообщении для ответа
|
||||
stored_feedback = storage.get(f'fbk-{support_msg_id}')
|
||||
if stored_feedback:
|
||||
print(f'handle answer from support')
|
||||
print('handle an answer from feedback group')
|
||||
stored_feedback = json.loads(stored_feedback)
|
||||
r = send_message(f'{stored_feedback["chat_id"]}', msg['text'], reply_to=stored_feedback["message_id"])
|
||||
print(r)
|
||||
|
@@ -3,6 +3,7 @@ from bot.utils.mention import mention, userdata_extract
|
||||
from bot.storage import storage
|
||||
|
||||
def show_request_msg(msg):
|
||||
print("showing request with button")
|
||||
chat_id = str(msg['chat']['id'])
|
||||
from_id = str(msg['from']['id'])
|
||||
lang = msg['from'].get('language_code', 'ru')
|
||||
|
10
bot/state.py
Normal file
10
bot/state.py
Normal file
@@ -0,0 +1,10 @@
|
||||
|
||||
class State:
|
||||
def __init__(self):
|
||||
self.talking = dict()
|
||||
def is_talking(self, uid):
|
||||
return uid in self.talking
|
||||
def make_talking(self, uid, cid):
|
||||
self.talking[uid] = cid
|
||||
def aho(self, uid):
|
||||
del self.talking[uid]
|
Reference in New Issue
Block a user