2022-03-18 21:25:50 +02:00

115 lines
4.7 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

from aiogram import types
from aiogram.types.chat_permissions import ChatPermissions
from aiogram.dispatcher import FSMContext
from aiogram.dispatcher.filters import ChatTypeFilter
from load import dp, bot, coc_api, config
from fsm.base import Verifycation
from database.worker import register, check_register
from utils.timer import timer_manager
@dp.message_handler(ChatTypeFilter(['private']), commands=['start'], state='*')
async def verify(message: types.Message):
status = await bot.get_chat_member(config['Bot']["chat_id"], message.from_user.id)
if status["status"] == "left":
await bot.send_message(message.chat.id, "Пошёл нахуй! В чат заходить не учили?")
return
if check_register(message.from_user.id):
await bot.send_message(message.chat.id, "Вы уже прошли верификацию!")
return
state = dp.current_state(chat=message.chat.id, user=message.from_user.id)
await state.finish()
await bot.send_message(message.chat.id, "Отправь мне свой тег")
await Verifycation.tag.set()
@dp.message_handler(state=Verifycation.tag)
async def tag_set(message: types.Message, state: FSMContext):
await state.update_data(tag=message.text)
await bot.send_message(
message.chat.id,
("Отправь мне свой токен авторизации\n"
"! Владелец или кто-либо не получает доступа к вашему акаунту !\n"
"<a href='https://developer.clashofclans.com/#/documentation'>"
"Если хотите убедиться в этом, можете посмотреть официальную API, которую использует данный бот</a>")
)
await Verifycation.token.set()
@dp.message_handler(state=Verifycation.token)
async def token_set(message: types.Message, state: FSMContext):
chat_id = config['Bot']["chat_id"]
await state.update_data(token=message.text)
info = await state.get_data()
await state.finish()
data = coc_api.verify_token(**info)
#{'tag': '#TAG', 'token': 'TOKEN', 'status': 'ok'}
members = coc_api.clan_members()
clan_member = False
for i in members['items']:
if data['tag'] in i['tag']:
clan_member = True
break
if clan_member == False:
await bot.send_message(
message.chat.id,
("Вы не являетесь учасником нашего клана! Ввойдите в клан, чтобы иметь доступ к чату\n"
"Вы были кикнуты с чата, вы можете перезайти и пройти проверку повторно!")
)
try:
await bot.ban_chat_member(chat_id, message.from_user.id)
except Exception: pass
await bot.unban_chat_member(chat_id, message.from_user.id, only_if_banned=True)
return
if (data['status'] == 'ok'):
await bot.send_message(message.chat.id, "Вы прошли проверку!")
register(message.from_user, coc_api.get_player(data['tag']))
group = await bot.get_chat(chat_id)
group_permissions = group["permissions"]
permissions = ChatPermissions(
can_send_messages= group_permissions["can_send_messages"],
can_send_media_messages= group_permissions["can_send_media_messages"],
can_send_polls= group_permissions["can_send_polls"],
can_send_other_messages= group_permissions["can_send_other_messages"],
can_add_web_page_previews= group_permissions["can_add_web_page_previews"],
can_change_info= group_permissions["can_change_info"],
can_invite_users= group_permissions["can_invite_users"],
can_pin_messages= group_permissions["can_pin_messages"]
)
try:
await bot.restrict_chat_member(
chat_id=chat_id,
user_id=message.from_user.id,
permissions=permissions
)
except Exception: pass
else:
await bot.send_message(
message.chat.id,
("Вы ввели неверный токен или тег!\n"
"Вы были кикнуты с чата, вы можете перезайти и пройти проверку повторно!")
)
try:
await bot.ban_chat_member(chat_id, message.from_user.id)
except Exception: pass
await bot.unban_chat_member(chat_id, message.from_user.id, only_if_banned=True)
m = timer_manager.cancel_timer(message.from_user.id)
if m is not None:
await m.delete()