0.0.11 many chages, see changelog
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
from tgbot.api import send_message, delete_message
|
||||
from tgbot.api import send_message, delete_message, kick_member
|
||||
from tgbot.handlers.command_my import handle_command_my
|
||||
from tgbot.utils.mention import userdata_extract
|
||||
from tgbot.storage import Profile
|
||||
|
||||
# remove link of callback sender
|
||||
@@ -29,7 +30,14 @@ def handle_unlink(callback_query):
|
||||
if len(actor['children']) > 0:
|
||||
handle_command_my(callback_query)
|
||||
|
||||
# если больше никто не поручился - мьютим
|
||||
# если больше никто не поручился - kick out
|
||||
if len(linked['parents']) == 0:
|
||||
lang = callback_query['from'].get('language_code', 'ru')
|
||||
for chat_id in linked['chats']:
|
||||
mute_member(chat_id, linked_id)
|
||||
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)
|
@@ -1,5 +1,6 @@
|
||||
from tgbot.api import send_message, forward_message, delete_message, approve_chat_join_request, unmute_member
|
||||
from tgbot.storage import Profile
|
||||
from tgbot.api import send_message, forward_message, delete_message, \
|
||||
approve_chat_join_request, unmute_member, edit_replymarkup, get_chat
|
||||
from tgbot.storage import Profile, storage
|
||||
|
||||
|
||||
def handle_button(callback_query):
|
||||
@@ -38,7 +39,27 @@ def handle_button(callback_query):
|
||||
r = approve_chat_join_request(chat_id, newcomer_id)
|
||||
print(r)
|
||||
|
||||
if not r.get('ok'):
|
||||
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)
|
||||
r = unmute_member(chat_id, newcomer_id, chat_permissions=perms)
|
||||
print(r)
|
@@ -27,7 +27,11 @@ def handle_feedback(msg):
|
||||
|
||||
def handle_answer(msg):
|
||||
answered_msg = msg['reply_to_message']
|
||||
if answered_msg['from']['is_bot']:
|
||||
r = get_chat_administrators(msg['chat']['id'])
|
||||
print(r)
|
||||
for a in r['result']:
|
||||
admins.append(a['user']['id'])
|
||||
if answered_msg['from']['is_bot'] and msg['from']['id'] in admins:
|
||||
support_msg_id = str(answered_msg['message_id'])
|
||||
# получение сохраненного информации о сообщении для ответа
|
||||
stored_feedback = storage.get(f'fbk-{support_msg_id}')
|
||||
|
@@ -1,6 +1,7 @@
|
||||
from tgbot.handlers.send_button import show_request_msg
|
||||
from tgbot.api import unmute_member, mute_member, delete_message
|
||||
from tgbot.storage import Profile, storage
|
||||
from tgbot.config import FEEDBACK_CHAT_ID
|
||||
|
||||
def handle_join(msg):
|
||||
chat_id = str(msg['chat']['id'])
|
||||
@@ -10,7 +11,7 @@ def handle_join(msg):
|
||||
|
||||
newcomer_id = str(msg['new_chat_member']['id'])
|
||||
if from_id == newcomer_id:
|
||||
if len(actor['parents']) == 0:
|
||||
if len(actor['parents']) == 0 and chat_id != FEEDBACK_CHAT_ID:
|
||||
# показываем сообщение с кнопкой "поручиться"
|
||||
show_request_msg(msg)
|
||||
|
||||
@@ -43,7 +44,7 @@ def handle_left(msg):
|
||||
|
||||
# удаление сообщения с кнопкой в этом чате
|
||||
prev_msg = storage.get(f'btn-{chat_id}-{member_id}')
|
||||
if prev_msg_id:
|
||||
if prev_msg:
|
||||
r = delete_message(chat_id, prev_msg['id'])
|
||||
print(r)
|
||||
storage.remove(f'btn-{chat_id}-{member_id}')
|
||||
|
@@ -1,18 +1,27 @@
|
||||
from tgbot.storage import scan, Profile
|
||||
from tgbot.api import approve_chat_join_request, kick_member
|
||||
from tgbot.utils.mention import userdata_extract
|
||||
|
||||
# устанавливает соответствие данных
|
||||
def handle_startup():
|
||||
btn_ids, btns = scan(match='btn-*', count=100)
|
||||
for btnid in btn_ids:
|
||||
# для каждой ранее созданной кнопки
|
||||
try:
|
||||
btnid_str = btnid.decode("utf-8")
|
||||
chat_id, member_id = btnid_str[3:].split('-')
|
||||
|
||||
newcomer = Profile.get(member_id)
|
||||
if len(newcomer.get('parents', [])) > 0:
|
||||
# принять заявку если её нажимали
|
||||
r = approve_chat_join_request(chat_id, member_id)
|
||||
print(r)
|
||||
except:
|
||||
print(f'error {btnid}')
|
||||
btnid_str = btnid.decode("utf-8").replace("btn-", "")
|
||||
parts = btnid_str.split('-')
|
||||
print(parts)
|
||||
_, chat_id, member_id = parts
|
||||
chat_id = "-" + chat_id
|
||||
newcomer = Profile.get(member_id)
|
||||
if len(newcomer.get('parents', [])) > 0:
|
||||
# принять заявку если её нажимали
|
||||
r = approve_chat_join_request(chat_id, member_id)
|
||||
print(r)
|
||||
elif len(newcomer.get('parents', [])) == 0:
|
||||
r = kick_member(chat_id, member_id)
|
||||
print(r)
|
||||
if r['ok']:
|
||||
_, identity, username = userdata_extract(newcomer['result']['user'])
|
||||
body = ('Участник %s%s был удалён' if lang == 'ru' else 'Member %s%s was deleted') % (identity, username)
|
||||
r = send_message(chat_id, body)
|
||||
print(r)
|
@@ -1,5 +1,5 @@
|
||||
from tgbot.api import send_message, send_photo, get_userphotos
|
||||
from tgbot.utils.mention import mention
|
||||
from tgbot.utils.mention import mention, userdata_extract
|
||||
from tgbot.storage import storage
|
||||
|
||||
def show_request_msg(msg):
|
||||
@@ -10,7 +10,7 @@ def show_request_msg(msg):
|
||||
"inline_keyboard": [
|
||||
[
|
||||
{
|
||||
"text": 'Моё одобрение' if lang == 'ru' else 'My connection',
|
||||
"text": '❤️',
|
||||
"callback_data": 'vouch' + from_id
|
||||
}
|
||||
]
|
||||
@@ -21,15 +21,18 @@ def show_request_msg(msg):
|
||||
r = get_userphotos(user_id=from_id)
|
||||
print(r)
|
||||
if r['ok'] and r['result']['total_count'] > 0:
|
||||
print('show button with photo')
|
||||
file_id = r['result']['photos'][0][0]['file_id']
|
||||
_uid, identity, username = userdata_extract(msg['from'])
|
||||
r = send_photo(
|
||||
chat_id,
|
||||
file_id,
|
||||
caption=newcomer_message + mention(msg['from']),
|
||||
caption=newcomer_message + f'{identity}{username}',
|
||||
reply_to=msg.get('message_id', ''),
|
||||
reply_markup=reply_markup
|
||||
)
|
||||
else:
|
||||
print('show button without photo')
|
||||
r = send_photo(
|
||||
chat_id,
|
||||
newcomer_message + mention(msg['from']),
|
||||
|
Reference in New Issue
Block a user