# meta developer: @trololo_1 from telethon import events from .. import utils, loader import re, asyncio, os chat = "@TTFullBot" class TTsaveMod(loader.Module): """Save tiktok video""" strings = {'name': 'TTsaveMod'} async def client_ready(self, client, db): self.db = db async def ttsavecmd(self, message): """.ttsave {link}""" args = utils.get_args_raw(message) async with message.client.conversation(chat) as conv: await utils.answer(message, 'Скачиваю...') response1, response2, response3 = [conv.wait_event(events.NewMessage(incoming=True, from_users=chat, chats=chat)) for i in range(3)] bot_send_link = await message.client.send_message(chat, args) response1 = await response1 response2 = await response2 response3 = await response3 await response2.download_media("hui.mp4") await message.client.send_file(message.to_id, "hui.mp4") await response1.delete() await response2.delete() await response3.delete() await bot_send_link.delete() await message.delete() os.remove("hui.mp4") async def ttacceptcmd(self, message): """ .ttaccept {reply/id} для открытия в чате автоматического скачивания ссылок. без аргументов тоже работает.\n.ttaccept -l для показа открытых чатов """ args = utils.get_args_raw(message) reply = await message.get_reply_message() users_list = self.db.get('TTsaveMod', 'users', []) if args == '-l': if len(users_list) == 0: return await utils.answer(message, 'Список пуст.') return await utils.answer(message, '• '+'\n• '.join([''+str(i)+'' for i in users_list])) try: if not args and not reply: user = message.chat_id else: user = reply.sender_id if not args else int(args) except: return await utils.answer(message, 'Неверно введён ид.') if user in users_list: users_list.remove(user) await utils.answer(message, f'Ид {str(user)} исключен.') else: users_list.append(user) await utils.answer(message, f'Ид {str(user)} добавлен.') self.db.set('TTsaveMod', 'users', users_list) async def watcher(self, message): try: users = self.db.get('TTsaveMod', 'users', []) if message.chat_id not in users: return links = re.findall(r'((?:https?://)?v[mt]\.tiktok\.com/[A-Za-z0-9_]+/?)', message.raw_text) if len(links) == 0: return async with message.client.conversation(chat) as conv: for link in links: response1, response2, response3 = [conv.wait_event(events.NewMessage(incoming=True, from_users=chat, chats=chat)) for i in range(3)] bot_send_link = await message.client.send_message(chat, link) response1 = await response1 response2 = await response2 response3 = await response3 await response2.download_media("hui.mp4") await message.client.send_file(message.chat_id, "hui.mp4") await response1.delete() await response2.delete() await response3.delete() await bot_send_link.delete() os.remove("hui.mp4") await asyncio.sleep(5) except: pass