remove mute/unmute, fix vouch callback
This commit is contained in:
parent
41882595b1
commit
aa6975e49a
|
@ -53,6 +53,7 @@ async def handle(req):
|
||||||
else:
|
else:
|
||||||
handle_feedback(msg)
|
handle_feedback(msg)
|
||||||
elif str(msg['chat']['id']) == FEEDBACK_CHAT_ID:
|
elif str(msg['chat']['id']) == FEEDBACK_CHAT_ID:
|
||||||
|
print('feedback chat message')
|
||||||
if 'reply_to_message' in msg:
|
if 'reply_to_message' in msg:
|
||||||
handle_answer(msg)
|
handle_answer(msg)
|
||||||
elif msg['text'] == '/graph':
|
elif msg['text'] == '/graph':
|
||||||
|
@ -83,7 +84,7 @@ async def handle(req):
|
||||||
|
|
||||||
# wtf
|
# wtf
|
||||||
else:
|
else:
|
||||||
print('UNHANDLED EVENT')
|
print('unhandled update')
|
||||||
|
|
||||||
|
|
||||||
except Exception:
|
except Exception:
|
||||||
|
|
|
@ -164,8 +164,10 @@ def get_userphotos(user_id):
|
||||||
|
|
||||||
# https://core.telegram.org/bots/api#editmessagereplymarkup
|
# https://core.telegram.org/bots/api#editmessagereplymarkup
|
||||||
def edit_replymarkup(cid, mid, reply_markup):
|
def edit_replymarkup(cid, mid, reply_markup):
|
||||||
url = apiBase + f"editMessageText?chat_id={cid}&message_id={mid}&reply_markup={text}"
|
reply_markup = json.dumps(reply_markup)
|
||||||
r = requests.post(url)
|
reply_markup = requests.utils.quote(reply_markup)
|
||||||
|
url = f"editMessageReplyMarkup?chat_id={cid}&message_id={mid}&reply_markup={reply_markup}"
|
||||||
|
r = requests.post(apiBase + url)
|
||||||
return r.json()
|
return r.json()
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -25,7 +25,8 @@ def handle_unlink(payload):
|
||||||
linked['parents'].remove(str(from_id))
|
linked['parents'].remove(str(from_id))
|
||||||
Profile.save(linked)
|
Profile.save(linked)
|
||||||
|
|
||||||
# удаляем старое сообщение с кнопками
|
|
||||||
|
# удаляем старое сообщение с кнопками-unlink
|
||||||
reply_msg_id = payload['message']['message_id']
|
reply_msg_id = payload['message']['message_id']
|
||||||
r = delete_message(from_id, reply_msg_id)
|
r = delete_message(from_id, reply_msg_id)
|
||||||
print(r)
|
print(r)
|
||||||
|
@ -34,14 +35,20 @@ def handle_unlink(payload):
|
||||||
if len(actor['children']) > 0:
|
if len(actor['children']) > 0:
|
||||||
handle_command_my(payload)
|
handle_command_my(payload)
|
||||||
|
|
||||||
# если больше никто не поручился - kick out
|
lang = payload['from'].get('language_code', 'ru')
|
||||||
if len(linked['parents']) == 0:
|
for chat_id in linked['chats']:
|
||||||
lang = payload['from'].get('language_code', 'ru')
|
|
||||||
for chat_id in linked['chats']:
|
# если больше никто не поручился - kick out
|
||||||
|
if len(linked['parents']) == 0:
|
||||||
r = kick_member(chat_id, linked_id)
|
r = kick_member(chat_id, linked_id)
|
||||||
print(r)
|
print(r)
|
||||||
if r['ok']:
|
if r['ok']:
|
||||||
_, identity, username = userdata_extract(linked['result']['user'])
|
_, identity, username = userdata_extract(linked['result']['user'])
|
||||||
body = ('Участник %s%s был удалён' if lang == 'ru' else 'Member %s%s was deleted') % (identity, username)
|
body = ('Участник %s%s был удалён' if lang == 'ru' else 'Member %s%s was deleted') % (identity, username)
|
||||||
r = send_message(chat_id, body)
|
r = send_message(chat_id, body)
|
||||||
print(r)
|
print(r)
|
||||||
|
|
||||||
|
# обновление счётчика
|
||||||
|
update_button(linked_id, chat_id)
|
||||||
|
|
||||||
|
|
|
@ -1,8 +1,30 @@
|
||||||
from tgbot.api import send_message, forward_message, delete_message, \
|
from tgbot.api import send_message, forward_message, delete_message, \
|
||||||
approve_chat_join_request, unmute_member, edit_replymarkup, get_chat
|
approve_chat_join_request, edit_replymarkup, get_chat
|
||||||
from tgbot.storage import Profile, storage
|
from tgbot.storage import Profile, storage
|
||||||
|
|
||||||
|
|
||||||
|
def update_button(chat_id, member_id, text='❤️'):
|
||||||
|
print('update reply markup')
|
||||||
|
prevmsg_id = storage.get(f'btn-{chat_id}-{member_id}')
|
||||||
|
if prevmsg_id:
|
||||||
|
premsg_id = prevmsg_id.decode('utf-8')
|
||||||
|
newcomer = Profile.get(member_id)
|
||||||
|
amount = len(newcomer['parents']) + 1
|
||||||
|
text += f' {amount}'
|
||||||
|
rm = {
|
||||||
|
"inline_keyboard": [
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"text": text,
|
||||||
|
"callback_data": 'vouch' + member_id
|
||||||
|
}
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
||||||
|
r = edit_replymarkup(chat_id, prevmsg_id, reply_markup=rm)
|
||||||
|
print(r)
|
||||||
|
|
||||||
|
|
||||||
def handle_button(callback_query):
|
def handle_button(callback_query):
|
||||||
# получаем профиль нажавшего кнопку
|
# получаем профиль нажавшего кнопку
|
||||||
actor_id = str(callback_query['from']['id'])
|
actor_id = str(callback_query['from']['id'])
|
||||||
|
@ -39,27 +61,4 @@ def handle_button(callback_query):
|
||||||
r = approve_chat_join_request(chat_id, newcomer_id)
|
r = approve_chat_join_request(chat_id, newcomer_id)
|
||||||
print(r)
|
print(r)
|
||||||
|
|
||||||
print('update reply markup')
|
update_button(chat_id, newcomer_id)
|
||||||
prevmsg_id = storage.get(f'btn-{chat_id}-{newcomer_id}').decode('utf-8')
|
|
||||||
amount = len(newcomer['parents']) + 1
|
|
||||||
rm = {
|
|
||||||
"inline_keyboard": [
|
|
||||||
[
|
|
||||||
{
|
|
||||||
"text": '❤️' + f'({amount})',
|
|
||||||
"callback_data": 'vouch' + newcomer_id
|
|
||||||
}
|
|
||||||
]
|
|
||||||
]
|
|
||||||
}
|
|
||||||
r = edit_replymarkup(chat_id, premsg_id, reply_markup=rm)
|
|
||||||
print(r)
|
|
||||||
|
|
||||||
if not r.get('ok'):
|
|
||||||
print('getting chat permissions')
|
|
||||||
r = get_chat(chat_id)
|
|
||||||
print(r)
|
|
||||||
perms = r['result']['permissions']
|
|
||||||
print('try to unmute newcomer')
|
|
||||||
r = unmute_member(chat_id, newcomer_id, chat_permissions=perms)
|
|
||||||
print(r)
|
|
|
@ -1,5 +1,5 @@
|
||||||
from tgbot.handlers.send_button import show_request_msg
|
from tgbot.handlers.send_button import show_request_msg
|
||||||
from tgbot.api import unmute_member, mute_member, delete_message
|
from tgbot.api import delete_message
|
||||||
from tgbot.storage import Profile, storage
|
from tgbot.storage import Profile, storage
|
||||||
from tgbot.config import FEEDBACK_CHAT_ID
|
from tgbot.config import FEEDBACK_CHAT_ID
|
||||||
|
|
||||||
|
@ -14,11 +14,6 @@ def handle_join(msg):
|
||||||
if len(actor['parents']) == 0 and str(chat_id) != FEEDBACK_CHAT_ID:
|
if len(actor['parents']) == 0 and str(chat_id) != FEEDBACK_CHAT_ID:
|
||||||
# показываем сообщение с кнопкой "поручиться"
|
# показываем сообщение с кнопкой "поручиться"
|
||||||
show_request_msg(msg)
|
show_request_msg(msg)
|
||||||
|
|
||||||
# до одобрения - мьют
|
|
||||||
r = mute_member(chat_id, newcomer_id)
|
|
||||||
print(r)
|
|
||||||
|
|
||||||
else:
|
else:
|
||||||
# за пользователя поручились ранее
|
# за пользователя поручились ранее
|
||||||
pass
|
pass
|
||||||
|
@ -30,9 +25,6 @@ def handle_join(msg):
|
||||||
newcomer['parents'].append(str(from_id))
|
newcomer['parents'].append(str(from_id))
|
||||||
Profile.save(newcomer)
|
Profile.save(newcomer)
|
||||||
actor['children'].append(str(m['id']))
|
actor['children'].append(str(m['id']))
|
||||||
r = unmute_member(chat_id, newcomer['id'])
|
|
||||||
print(r)
|
|
||||||
|
|
||||||
# обновляем профиль пригласившего
|
# обновляем профиль пригласившего
|
||||||
Profile.save(actor)
|
Profile.save(actor)
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
from tgbot.storage import scan, Profile
|
from tgbot.storage import scan, Profile
|
||||||
from tgbot.api import approve_chat_join_request, kick_member
|
from tgbot.api import approve_chat_join_request, kick_member
|
||||||
|
from tgbot.handlers.callback_vouch import update_button
|
||||||
from tgbot.utils.mention import userdata_extract
|
from tgbot.utils.mention import userdata_extract
|
||||||
|
|
||||||
# устанавливает соответствие данных
|
# устанавливает соответствие данных
|
||||||
|
@ -17,6 +18,7 @@ def handle_startup():
|
||||||
# принять заявку если её нажимали
|
# принять заявку если её нажимали
|
||||||
r = approve_chat_join_request(chat_id, member_id)
|
r = approve_chat_join_request(chat_id, member_id)
|
||||||
print(r)
|
print(r)
|
||||||
|
update_button(chat_id, member_id)
|
||||||
elif len(newcomer.get('parents', [])) == 0:
|
elif len(newcomer.get('parents', [])) == 0:
|
||||||
r = kick_member(chat_id, member_id)
|
r = kick_member(chat_id, member_id)
|
||||||
print(r)
|
print(r)
|
||||||
|
|
Loading…
Reference in New Issue
Block a user