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