Added and updated repositories 2025-07-11 08:27:20

This commit is contained in:
github-actions[bot]
2025-07-11 08:27:20 +00:00
parent 35e8befc45
commit e328cd957a
320 changed files with 37419 additions and 33510 deletions

View File

@@ -1,42 +1,42 @@
# meta developer: @trololo_1
from .. import utils, loader
from asyncio import sleep
class BFGMod(loader.Module):
"""Send mes"""
strigs = {'name': 'BFGMod'}
async def client_ready(self, client, db):
self.db = db
async def bbtoncmd(self, message):
""" """
await utils.answer(message, '<b>Запущено</b>')
status = self.db.set('BFGMod', 'status1', True)
while status:
for i in range(15):
if not self.db.get('BFGMod', 'status1'): return
await message.respond('10')
await sleep(2)
status = self.db.get('BFGMod', 'status1')
await message.respond('🚀Оценивать')
async def bbtoffcmd(self, message):
""" """
self.db.set('BFGMod', 'status1', False)
await utils.answer(message, '<b>Остановлено</b>')
async def bfgoncmd(self, message):
""" """
await utils.answer(message, '<b>Запущено</b>')
status = self.db.set('BFGMod', 'status2', True)
while status:
await message.respond('копать материю')
await sleep(60*5)
status = self.db.get('BFGMod', 'status2')
if not status: return
async def bfgoffcmd(self, message):
""" """
self.db.set('BFGMod', 'status2', False)
await utils.answer(message, '<b>Остановлено</b>')
# meta developer: @trololo_1
from .. import utils, loader
from asyncio import sleep
class BFGMod(loader.Module):
"""Send mes"""
strigs = {'name': 'BFGMod'}
async def client_ready(self, client, db):
self.db = db
async def bbtoncmd(self, message):
""" """
await utils.answer(message, '<b>Запущено</b>')
status = self.db.set('BFGMod', 'status1', True)
while status:
for i in range(15):
if not self.db.get('BFGMod', 'status1'): return
await message.respond('10')
await sleep(2)
status = self.db.get('BFGMod', 'status1')
await message.respond('🚀Оценивать')
async def bbtoffcmd(self, message):
""" """
self.db.set('BFGMod', 'status1', False)
await utils.answer(message, '<b>Остановлено</b>')
async def bfgoncmd(self, message):
""" """
await utils.answer(message, '<b>Запущено</b>')
status = self.db.set('BFGMod', 'status2', True)
while status:
await message.respond('копать материю')
await sleep(60*5)
status = self.db.get('BFGMod', 'status2')
if not status: return
async def bfgoffcmd(self, message):
""" """
self.db.set('BFGMod', 'status2', False)
await utils.answer(message, '<b>Остановлено</b>')

View File

@@ -1,32 +1,32 @@
# meta developer: @trololo_1
from .. import loader, utils
@loader.tds
class LsSendMod(loader.Module):
"""Отправка смс в лс по юзеру пользователя."""
strings = {'name':'LsSend'}
async def sendcmd(self, message):
""" .send {юзер} {текст или реплай}"""
try:
reply = await message.get_reply_message()
text = utils.get_args_raw(message)
id = str(text.split(' ')[0])
check = []
for i in text.split(' '):
check.append(i)
if len(check) <= 1:
send = reply
else:
send = str(text.split(' ', maxsplit=1)[1])
if send:
await message.client.send_message(id, send)
await message.edit('<b>Сообщение успешно отправлено!</b>')
else:
await message.edit('<b>Не было сделано реплая или нет текста.</b>')
except:
await message.edit('<b>Неверный юзер, юзера нет вообще, либо ещё какая то ошибка.</b>')
# meta developer: @trololo_1
from .. import loader, utils
@loader.tds
class LsSendMod(loader.Module):
"""Отправка смс в лс по юзеру пользователя."""
strings = {'name':'LsSend'}
async def sendcmd(self, message):
""" .send {юзер} {текст или реплай}"""
try:
reply = await message.get_reply_message()
text = utils.get_args_raw(message)
id = str(text.split(' ')[0])
check = []
for i in text.split(' '):
check.append(i)
if len(check) <= 1:
send = reply
else:
send = str(text.split(' ', maxsplit=1)[1])
if send:
await message.client.send_message(id, send)
await message.edit('<b>Сообщение успешно отправлено!</b>')
else:
await message.edit('<b>Не было сделано реплая или нет текста.</b>')
except:
await message.edit('<b>Неверный юзер, юзера нет вообще, либо ещё какая то ошибка.</b>')

View File

@@ -1,277 +1,277 @@
# meta developer: @trololo_1
from .. import loader, utils
import asyncio, pytz, re, telethon
from telethon.tl.types import MessageEntityTextUrl
import json as JSON
from datetime import datetime, date, time
class NumMod(loader.Module):
"Заражает по реплаю."
strings={"name": "NumMod"}
async def client_ready(self, client, db):
self.db = db
if not self.db.get("NumMod", "exUsers", False):
self.db.set("NumMod", "exUsers", [])
if not self.db.get("NumMod", "infList", False):
self.db.set("NumMod", "infList", {})
async def numcmd(self, message):
".num [arg] [arg] [arg]....\nВ качестве аргументов используй числа. или первые символы строки."
reply = await message.get_reply_message()
a = reply.text
exlist = self.db.get("NumMod", "exUsers")
count_st = 0
count_hf = 0
if not reply:
await message.edit('Нет реплая.')
return
args = utils.get_args_raw(message)
list_args=[]
if not args:
await message.edit('Нет аргументов')
return
for i in args.split(' '):
if '-' in i:
ot_do = i.split('-')
try:
for x in range(int(ot_do[0]),int(ot_do[1])+1):
list_args.append(str(x))
except:
await message.respond('Используй правильно функцию "от-до"')
return
else:
list_args.append(i)
lis = a.splitlines()
for start in list_args:
for x in lis:
if x.lower().startswith(str(start.lower())):
count_st = 1
if 'href="' in x:
count_hf = 1
b=x.find('href="')+6
c=x.find('">')
link = x[b:c]
if link.startswith('tg'):
list = '@' + link.split('=')[1]
if list in exlist:
await message.reply(f'Исключение: <code>{list}</code>')
else:
await message.reply(f'заразить {list}')
break
elif link.startswith('https://t.me'):
a ='@' + str(link.split('/')[3])
if a in exlist:
await message.reply(f'Исключение: <code>{a}</code>')
else:
await message.reply(f'заразить {a}')
break
else:
await message.reply('что за хуета?')
break
await asyncio.sleep(3)
if not count_st:
await message.edit('Не найдено ни одного совпадения в начале строк с аргументами.')
elif not count_hf:
await message.edit('Не найдено ни одной ссылки.')
elif len(list_args) >= 3:
await message.respond('<b>Заражения успешно завершены.</b>')
async def zarcmd(self, message):
"Заражает всех по реплаю."
reply = await message.get_reply_message()
exlist = self.db.get("NumMod", "exUsers")
if not reply:
await message.edit('Нет реплая.')
return
json = JSON.loads(reply.to_json())
for i in range(0, len(reply.entities) ):
try:
link = json["entities"][i]["url"]
if link.startswith('tg'):
list = '@' + link.split('=')[1]
if list in exlist:
await message.reply(f'Исключение: <code>{list}</code>')
else:
await message.reply('заразить ' + list)
elif link.startswith('https://t.me'):
a ='@' + str(link.split('/')[3])
if a in exlist:
await message.reply(f'Исключение: <code>{a}</code>')
else:
await message.reply(f'заразить {a}')
else:
await message.reply('что за хуета?')
except:
await message.reply("заразить " + reply.raw_text[json["entities"][i]["offset"]:json["entities"][i]["offset"]+json["entities"][i]["length"]] )
await asyncio.sleep(3)
await message.delete()
async def exnumcmd(self, message):
"Добавляет исключения в модуль.\nИспользуй: .exnum {@user/@id}"
args = utils.get_args_raw(message)
exlistGet = self.db.get("NumMod", "exUsers")
exlist = exlistGet.copy()
if not args:
if len(exlist) < 1:
await message.edit('Список исключений пуст.')
return
exsms = ''
count = 0
for i in exlist:
count+=1
exsms+=f'<b>{count}.</b> <code>{i}</code>\n'
message = await utils.answer(message, exsms)
return
if args == 'clear':
exlist.clear()
self.db.set("NumMod", "exUsers", exlist)
await message.edit('Список исключений очистен.')
return
if len(args.split(' ')) > 1 or args[0] != '@':
await message.edit('Количество аргументов <b>больше</b> одного, либо начинается <b>не</b> со знака <code>@</code>')
return
if args in exlist:
exlist.remove(args)
self.db.set("NumMod", "exUsers", exlist)
await message.edit(f'Пользователь <code>{args}</code> исключён.')
return
exlist.append(args)
self.db.set("NumMod", "exUsers", exlist)
await message.edit(f'Пользователь <code>{args}</code> добавлен.')
async def zarlistcmd(self, message):
""" Лист ваших заражений.\n.zarlist {@id/user} {count} {args}\nДля удаления: .zarlist {@id/user}\nАргументы:\n-k -- добавить букву k(тысяч) к числу.\n-f -- поиск по ид'у/юзеру.\n-r -- добавлению в список по реплаю."""
args = utils.get_args_raw(message)
infList = self.db.get("NumMod", "infList")
timezone = "Europe/Kiev"
vremya = datetime.now(pytz.timezone(timezone)).strftime("%d.%m")
try:
args_list = args.split(' ')
except:
pass
if not args:
if not infList:
await utils.answer(message, "Лист заражений <b>пуст</b>.")
return
sms = ''
for key, value in infList.items():
sms+=f'<b>• <code>{key}</code> -- <code>{value[0]}</code> [<i>{value[1]}</i>]</b>\n'
await utils.answer(message, sms)
return
if not '-r' in args.lower():
if args_list[0] == "clear":
infList.clear()
self.db.set("NumMod", "infList", infList)
await utils.answer(message, "Лист заражений <b>очищен</b>.")
elif args_list[0] in infList and '-f' in args.lower():
user = infList[args_list[0]]
await utils.answer(message, f"<b>• <code>{args_list[0]}</code> -- {user[0]} [<i>{user[1]}</i>]</b>")
elif len(args_list) == 1 and args_list[0] in infList:
infList.pop(args_list[0])
self.db.set("NumMod", "infList", infList)
await utils.answer(message, f"Пользователь <code>{args}</code> удалён из списка.")
elif args_list[0][0] != '@':
await utils.answer(message, 'Это не <b>@ид/юзер</b>.')
else:
try:
user, count = str(args_list[0]), float(args_list[1])
except:
await utils.answer(message, "Данные были введены не корректно")
return
k = ''
if '-k' in args.lower():
k+='k'
infList[user] = [str(count)+k, vremya]
self.db.set("NumMod", "infList", infList)
await utils.answer(message, f"Пользователь <code>{user}</code> добавлен в список заражений.\nЧисло: <code>{count}</code>{k}\nДата: <b>{vremya}</b>")
else:
reply = await message.get_reply_message()
if not reply:
return await utils.answer(message, 'Реплай должен быть на смс ириса "<b>...подверг заражению...</b>"')
elif reply.sender_id != 707693258 and not 'подверг заражению' in reply.text or not 'подвергла заражению' in reply.text:
return await utils.answer(message, 'Реплай должен быть на смс ириса "<b>...подверг заражению...</b>"')
else: #☣
text = reply.text
x = text.index('')+4
count = text[x:].split(' ', maxsplit=1)[0]
x = text.index('user?id=') + 8
user = '@' + text[x:].split('"', maxsplit=1)[0]
infList[user] = [str(count), vremya]
self.db.set("NumMod", "infList", infList)
await utils.answer(message, f"Пользователь <code>{user}</code> добавлен в список заражений.\nЧисло: <code>{count}</code>\nДата: <b>{vremya}</b>")
async def numfiltercmd(self, message):
""" .numfilter {args1} {args2 OR reply} \nВызови команду, чтобы просмотреть аргументы."""
args = utils.get_args_raw(message)
reply = await message.get_reply_message()
filter_and_users = self.db.get("NumMod", "numfilter", {'users': [], 'filter': None, 'status': False})
if not args:
return await utils.answer(message, f"-sU --- добавить|удалить юзеров(не больше 5), на которых будет триггериться фильтр(ид|реплай).\n[{', '.join(list('<code>' + i + '</code>' for i in filter_and_users['users']))}]\n-sF --- установить фильтр. Допустим один.\n<code>{filter_and_users['filter'] if filter_and_users['filter'] else '❌Не установлен.'}</code>\n-t --- запустить|остановить.\n<b>{'✅Запущен' if filter_and_users['status'] else '❌Остановлен'}.</b>\n\nРаботает так:\n[фильтр] (бей|зарази[ть]) (1-10) ((@id|user)|link(даже полный линк ид'а))\n[фильтр] лечись|вакцин[ау]|купи[ть] вакцину\n[фильтр] жертвы|покажи жертв\n[фильтр] лаба?|покажи лабу?\nИгнор регистра!!")
args = args.split(' ', maxsplit=1)
if len(args) == 1 and not reply and args[0] != '-t':
return await utils.answer(message, '❌ Нет 2 аргумента и реплая.')
elif args[0] == '-sU':
try:
user_id = args[1]
if not user_id.isdigit():
return await utils.answer(message, 'Это не ид.')
except:
user_id = str(reply.sender_id)
if user_id in filter_and_users['users']:
filter_and_users['users'].remove(user_id)
await utils.answer(message, f"✅ Ид <code>{user_id}</code> удалён.")
elif len(filter_and_users['users']) <= 5:
filter_and_users['users'].append(user_id)
await utils.answer(message, f"✅ Ид <code>{user_id}</code> добавлен.")
else:
return await utils.answer(message, '❌ Превышен лимит в 5 юзеров.')
return self.db.set("NumMod", "numfilter", filter_and_users)
elif args[0] == '-sF':
try:
filter_and_users['filter'] = args[1].lower().strip()
self.db.set("NumMod", "numfilter", filter_and_users)
return await utils.answer(message, f"✅ Фильтр ~~~ <code>{args[1]}</code> ~~~ успешно установлен!")
except:
return await utils.answer(message, "Где 2 аргумент❓")
elif args[0] == '-t':
if filter_and_users['status']:
filter_and_users['status'] = False
self.db.set("NumMod", "numfilter", filter_and_users)
return await utils.answer(message, "❌ Фильтр остановлен.")
else:
filter_and_users['status'] = True
self.db.set("NumMod", "numfilter", filter_and_users)
return await utils.answer(message, "✅ Фильтр запущен.")
else:
return await utils.answer(message, "❌ Неизвестный аргумент.")
async def watcher(self, message):
if not isinstance(message, telethon.tl.types.Message): return
filter_and_users = self.db.get("NumMod", "numfilter", {'users': [], 'filter': None, 'status': False})
user_id = str(message.sender_id)
if not filter_and_users['filter'] or not filter_and_users['status'] or user_id not in filter_and_users['users'] or message.is_private: return
text = message.raw_text.lower()
if not text.startswith(filter_and_users['filter']): return
send_mes = re.search(r"(?P<z>бей\s|зарази[ть]{,2}\s)(?P<lvl>[1-9]?[0]?\s)?(?P<link>@[0-9a-z_]+|(?:https?://)?t\.me/[0-9a-z_]+|tg://openmessage\?user_id=(?P<id>[0-9]+))", text)
if send_mes:
send_mes = send_mes.groupdict()
send_mes['link'], send_mes['id'] = '@'+send_mes['id'] if send_mes['id'] else send_mes['link'], ''
send_mes['z'] = 'заразить '
send_mes['lvl'] = send_mes['lvl'] if send_mes['lvl'] else ''
mes = ''.join(send_mes.values())
return await message.respond(mes)
send_mes = re.search(r"лечись|вакцин[ау]|купи[ть]{,2} вакцину", text)
if send_mes:
return await message.respond('.купить вакцину')
send_mes = re.search(r"жертвы|покажи жертв", text)
if send_mes:
return await message.respond('.мои жертвы')
send_mes = re.search(r"лаба?|покажи лабу?", text)
if send_mes:
return await message.respond('.лаб')
# meta developer: @trololo_1
from .. import loader, utils
import asyncio, pytz, re, telethon
from telethon.tl.types import MessageEntityTextUrl
import json as JSON
from datetime import datetime, date, time
class NumMod(loader.Module):
"Заражает по реплаю."
strings={"name": "NumMod"}
async def client_ready(self, client, db):
self.db = db
if not self.db.get("NumMod", "exUsers", False):
self.db.set("NumMod", "exUsers", [])
if not self.db.get("NumMod", "infList", False):
self.db.set("NumMod", "infList", {})
async def numcmd(self, message):
".num [arg] [arg] [arg]....\nВ качестве аргументов используй числа. или первые символы строки."
reply = await message.get_reply_message()
a = reply.text
exlist = self.db.get("NumMod", "exUsers")
count_st = 0
count_hf = 0
if not reply:
await message.edit('Нет реплая.')
return
args = utils.get_args_raw(message)
list_args=[]
if not args:
await message.edit('Нет аргументов')
return
for i in args.split(' '):
if '-' in i:
ot_do = i.split('-')
try:
for x in range(int(ot_do[0]),int(ot_do[1])+1):
list_args.append(str(x))
except:
await message.respond('Используй правильно функцию "от-до"')
return
else:
list_args.append(i)
lis = a.splitlines()
for start in list_args:
for x in lis:
if x.lower().startswith(str(start.lower())):
count_st = 1
if 'href="' in x:
count_hf = 1
b=x.find('href="')+6
c=x.find('">')
link = x[b:c]
if link.startswith('tg'):
list = '@' + link.split('=')[1]
if list in exlist:
await message.reply(f'Исключение: <code>{list}</code>')
else:
await message.reply(f'заразить {list}')
break
elif link.startswith('https://t.me'):
a ='@' + str(link.split('/')[3])
if a in exlist:
await message.reply(f'Исключение: <code>{a}</code>')
else:
await message.reply(f'заразить {a}')
break
else:
await message.reply('что за хуета?')
break
await asyncio.sleep(3)
if not count_st:
await message.edit('Не найдено ни одного совпадения в начале строк с аргументами.')
elif not count_hf:
await message.edit('Не найдено ни одной ссылки.')
elif len(list_args) >= 3:
await message.respond('<b>Заражения успешно завершены.</b>')
async def zarcmd(self, message):
"Заражает всех по реплаю."
reply = await message.get_reply_message()
exlist = self.db.get("NumMod", "exUsers")
if not reply:
await message.edit('Нет реплая.')
return
json = JSON.loads(reply.to_json())
for i in range(0, len(reply.entities) ):
try:
link = json["entities"][i]["url"]
if link.startswith('tg'):
list = '@' + link.split('=')[1]
if list in exlist:
await message.reply(f'Исключение: <code>{list}</code>')
else:
await message.reply('заразить ' + list)
elif link.startswith('https://t.me'):
a ='@' + str(link.split('/')[3])
if a in exlist:
await message.reply(f'Исключение: <code>{a}</code>')
else:
await message.reply(f'заразить {a}')
else:
await message.reply('что за хуета?')
except:
await message.reply("заразить " + reply.raw_text[json["entities"][i]["offset"]:json["entities"][i]["offset"]+json["entities"][i]["length"]] )
await asyncio.sleep(3)
await message.delete()
async def exnumcmd(self, message):
"Добавляет исключения в модуль.\nИспользуй: .exnum {@user/@id}"
args = utils.get_args_raw(message)
exlistGet = self.db.get("NumMod", "exUsers")
exlist = exlistGet.copy()
if not args:
if len(exlist) < 1:
await message.edit('Список исключений пуст.')
return
exsms = ''
count = 0
for i in exlist:
count+=1
exsms+=f'<b>{count}.</b> <code>{i}</code>\n'
message = await utils.answer(message, exsms)
return
if args == 'clear':
exlist.clear()
self.db.set("NumMod", "exUsers", exlist)
await message.edit('Список исключений очистен.')
return
if len(args.split(' ')) > 1 or args[0] != '@':
await message.edit('Количество аргументов <b>больше</b> одного, либо начинается <b>не</b> со знака <code>@</code>')
return
if args in exlist:
exlist.remove(args)
self.db.set("NumMod", "exUsers", exlist)
await message.edit(f'Пользователь <code>{args}</code> исключён.')
return
exlist.append(args)
self.db.set("NumMod", "exUsers", exlist)
await message.edit(f'Пользователь <code>{args}</code> добавлен.')
async def zarlistcmd(self, message):
""" Лист ваших заражений.\n.zarlist {@id/user} {count} {args}\nДля удаления: .zarlist {@id/user}\nАргументы:\n-k -- добавить букву k(тысяч) к числу.\n-f -- поиск по ид'у/юзеру.\n-r -- добавлению в список по реплаю."""
args = utils.get_args_raw(message)
infList = self.db.get("NumMod", "infList")
timezone = "Europe/Kiev"
vremya = datetime.now(pytz.timezone(timezone)).strftime("%d.%m")
try:
args_list = args.split(' ')
except:
pass
if not args:
if not infList:
await utils.answer(message, "Лист заражений <b>пуст</b>.")
return
sms = ''
for key, value in infList.items():
sms+=f'<b>• <code>{key}</code> -- <code>{value[0]}</code> [<i>{value[1]}</i>]</b>\n'
await utils.answer(message, sms)
return
if not '-r' in args.lower():
if args_list[0] == "clear":
infList.clear()
self.db.set("NumMod", "infList", infList)
await utils.answer(message, "Лист заражений <b>очищен</b>.")
elif args_list[0] in infList and '-f' in args.lower():
user = infList[args_list[0]]
await utils.answer(message, f"<b>• <code>{args_list[0]}</code> -- {user[0]} [<i>{user[1]}</i>]</b>")
elif len(args_list) == 1 and args_list[0] in infList:
infList.pop(args_list[0])
self.db.set("NumMod", "infList", infList)
await utils.answer(message, f"Пользователь <code>{args}</code> удалён из списка.")
elif args_list[0][0] != '@':
await utils.answer(message, 'Это не <b>@ид/юзер</b>.')
else:
try:
user, count = str(args_list[0]), float(args_list[1])
except:
await utils.answer(message, "Данные были введены не корректно")
return
k = ''
if '-k' in args.lower():
k+='k'
infList[user] = [str(count)+k, vremya]
self.db.set("NumMod", "infList", infList)
await utils.answer(message, f"Пользователь <code>{user}</code> добавлен в список заражений.\nЧисло: <code>{count}</code>{k}\nДата: <b>{vremya}</b>")
else:
reply = await message.get_reply_message()
if not reply:
return await utils.answer(message, 'Реплай должен быть на смс ириса "<b>...подверг заражению...</b>"')
elif reply.sender_id != 707693258 and not 'подверг заражению' in reply.text or not 'подвергла заражению' in reply.text:
return await utils.answer(message, 'Реплай должен быть на смс ириса "<b>...подверг заражению...</b>"')
else: #☣
text = reply.text
x = text.index('')+4
count = text[x:].split(' ', maxsplit=1)[0]
x = text.index('user?id=') + 8
user = '@' + text[x:].split('"', maxsplit=1)[0]
infList[user] = [str(count), vremya]
self.db.set("NumMod", "infList", infList)
await utils.answer(message, f"Пользователь <code>{user}</code> добавлен в список заражений.\nЧисло: <code>{count}</code>\nДата: <b>{vremya}</b>")
async def numfiltercmd(self, message):
""" .numfilter {args1} {args2 OR reply} \nВызови команду, чтобы просмотреть аргументы."""
args = utils.get_args_raw(message)
reply = await message.get_reply_message()
filter_and_users = self.db.get("NumMod", "numfilter", {'users': [], 'filter': None, 'status': False})
if not args:
return await utils.answer(message, f"-sU --- добавить|удалить юзеров(не больше 5), на которых будет триггериться фильтр(ид|реплай).\n[{', '.join(list('<code>' + i + '</code>' for i in filter_and_users['users']))}]\n-sF --- установить фильтр. Допустим один.\n<code>{filter_and_users['filter'] if filter_and_users['filter'] else '❌Не установлен.'}</code>\n-t --- запустить|остановить.\n<b>{'✅Запущен' if filter_and_users['status'] else '❌Остановлен'}.</b>\n\nРаботает так:\n[фильтр] (бей|зарази[ть]) (1-10) ((@id|user)|link(даже полный линк ид'а))\n[фильтр] лечись|вакцин[ау]|купи[ть] вакцину\n[фильтр] жертвы|покажи жертв\n[фильтр] лаба?|покажи лабу?\nИгнор регистра!!")
args = args.split(' ', maxsplit=1)
if len(args) == 1 and not reply and args[0] != '-t':
return await utils.answer(message, '❌ Нет 2 аргумента и реплая.')
elif args[0] == '-sU':
try:
user_id = args[1]
if not user_id.isdigit():
return await utils.answer(message, 'Это не ид.')
except:
user_id = str(reply.sender_id)
if user_id in filter_and_users['users']:
filter_and_users['users'].remove(user_id)
await utils.answer(message, f"✅ Ид <code>{user_id}</code> удалён.")
elif len(filter_and_users['users']) <= 5:
filter_and_users['users'].append(user_id)
await utils.answer(message, f"✅ Ид <code>{user_id}</code> добавлен.")
else:
return await utils.answer(message, '❌ Превышен лимит в 5 юзеров.')
return self.db.set("NumMod", "numfilter", filter_and_users)
elif args[0] == '-sF':
try:
filter_and_users['filter'] = args[1].lower().strip()
self.db.set("NumMod", "numfilter", filter_and_users)
return await utils.answer(message, f"✅ Фильтр ~~~ <code>{args[1]}</code> ~~~ успешно установлен!")
except:
return await utils.answer(message, "Где 2 аргумент❓")
elif args[0] == '-t':
if filter_and_users['status']:
filter_and_users['status'] = False
self.db.set("NumMod", "numfilter", filter_and_users)
return await utils.answer(message, "❌ Фильтр остановлен.")
else:
filter_and_users['status'] = True
self.db.set("NumMod", "numfilter", filter_and_users)
return await utils.answer(message, "✅ Фильтр запущен.")
else:
return await utils.answer(message, "❌ Неизвестный аргумент.")
async def watcher(self, message):
if not isinstance(message, telethon.tl.types.Message): return
filter_and_users = self.db.get("NumMod", "numfilter", {'users': [], 'filter': None, 'status': False})
user_id = str(message.sender_id)
if not filter_and_users['filter'] or not filter_and_users['status'] or user_id not in filter_and_users['users'] or message.is_private: return
text = message.raw_text.lower()
if not text.startswith(filter_and_users['filter']): return
send_mes = re.search(r"(?P<z>бей\s|зарази[ть]{,2}\s)(?P<lvl>[1-9]?[0]?\s)?(?P<link>@[0-9a-z_]+|(?:https?://)?t\.me/[0-9a-z_]+|tg://openmessage\?user_id=(?P<id>[0-9]+))", text)
if send_mes:
send_mes = send_mes.groupdict()
send_mes['link'], send_mes['id'] = '@'+send_mes['id'] if send_mes['id'] else send_mes['link'], ''
send_mes['z'] = 'заразить '
send_mes['lvl'] = send_mes['lvl'] if send_mes['lvl'] else ''
mes = ''.join(send_mes.values())
return await message.respond(mes)
send_mes = re.search(r"лечись|вакцин[ау]|купи[ть]{,2} вакцину", text)
if send_mes:
return await message.respond('.купить вакцину')
send_mes = re.search(r"жертвы|покажи жертв", text)
if send_mes:
return await message.respond('.мои жертвы')
send_mes = re.search(r"лаба?|покажи лабу?", text)
if send_mes:
return await message.respond('.лаб')

File diff suppressed because it is too large Load Diff

View File

@@ -1,146 +1,146 @@
from .. import loader, utils
from datetime import datetime, date, time
from asyncio import sleep
import os, io, asyncio, pytz, requests
@loader.tds
class SeeChatMod(loader.Module):
"""tracking in all PM chats."""
strings={"name": "SeeChat"}
async def client_ready(self, message, db):
self.db = db
self.db.set("SeeChat", "seechat", True)
self.di = "SeeChat/"
if not os.path.exists(self.di):
os.mkdir(self.di)
async def seechatcmd(self, message):
"""use: .seechat | to enable tracking in all PM chats."""
if self.db.get("SeeChat", "seechat") is not True:
await utils.answer(message, "[SeeChat] turned <b>on</b> succesfully.")
self.db.set("SeeChat", "seechat", True)
else:
await utils.answer(message, "[SeeChat] turned <b>off</b> succesfully.")
self.db.set("SeeChat", "seechat", False)
async def setchatcmd(self, message):
"""use: .setchat | to set this chat as a track chat."""
chat = await message.client.get_entity(message.to_id)
self.db.set("SeeChat", "log", str(chat.id))
await utils.answer(message, f"<b>this chat was set as a chat for tracks.</b>")
async def seechatscmd(self, message):
"""use: .seechats | to see the list of tracking people."""
await utils.answer(message, "wait a second..")
chats = ""
for userId in enumerate(os.listdir(self.di)):
try:
user = await message.client.get_entity(int(userId[1][:-4]))
except: pass
if not user.deleted:
chats += f"{userId[0]+1} • <a href=tg://user?id={user.id}>{user.first_name}</a> ID: [<code>{user.id}</code>]\n"
else:
chats += f"{userId[0]+1} • deleted account ID: [<code>{user.id}</code>]\n"
await utils.answer(message, "<b>Tracking users:</b>\n\n" + chats)
async def gseecmd(self, message):
"""use: .gsee {id} | to get the tracked file."""
args = utils.get_args_raw(message)
if not args:
return await utils.answer(message, "<b>what about args?</b>")
try:
user = await message.client.get_entity(int(args))
await utils.answer(message, f"<b>PM file with: <code>{user.first_name}</code></b>")
await message.client.send_file(message.to_id, f"{self.di}{args}.txt")
except: return await utils.answer(message, "<b>file is empty.</b>")
async def delseecmd(self, message):
"""use: .delsee {id} | to delete the tracked file."""
args = utils.get_args_raw(message)
if not args:
return await utils.answer(message, "<b>what about args?</b>")
if args == "all":
os.system(f"rm -rf {self.di}*")
await utils.answer(message, "<b>all PM chats file has been successfully deleted.</b>")
else:
try:
user = await message.client.get_entity(int(args))
await utils.answer(message, f"<b>the chat file has been deleted with: <code>{user.first_name}</code></b>")
os.remove(f"{self.di}{args}.txt")
except: return await utils.answer(message, "<b>file can't be deleted.</b>")
async def excseecmd(self, message):
"""use: .excsee {id} | to add / remove user from exclude tracking."""
exception = self.db.get("SeeChat", "exception", [])
args = utils.get_args_raw(message)
if not args:
return await utils.answer(message, "<b>what about args?</b>")
if args == "clear":
self.db.set("SeeChat", "exception", [])
return await utils.answer(message, "<b>the exclusion list was cleared successfully.</b>")
try:
user = await message.client.get_entity(int(args))
if str(user.id) not in exception:
exception.append(str(user.id))
await utils.answer(message, f"<b>{user.first_name}, has been added to the list of exclusions.</b>")
os.remove(f"{self.di}{user.id}.txt")
else:
exception.remove(str(user.id))
await utils.answer(message, f"<b>{user.first_name}, has been removed from the list of exclusions.</b>")
self.db.set("SeeChat", "exception", exception)
except: return await utils.answer(message, "<b>failed to remove user from the list of exclusions</b>")
async def exclistcmd(self, message):
"""use: .exclist | to see the list of exceptions."""
exception = self.db.get("SeeChat", "exception", [])
users = ""
try:
for exc in enumerate(exception):
user = await message.client.get_entity(int(exc[1]))
users += f"{exc[0]+1} • <a href=tg://user?id={user.id}>{user.first_name}</a> ID: [<code>{user.id}</code>]\n"
await utils.answer(message, "<b>List of exclusions:</b>\n\n" + users)
except Exception as e: return await utils.answer(message, f"<b>the list of users is empty.</b> {e}")
async def watcher(self, message):
me = await message.client.get_me()
seechat = self.db.get("SeeChat", "seechat")
exception = self.db.get("SeeChat", "exception", [])
log = self.db.get("SeeChat", "log", str(me.id))
chat = await message.client.get_entity(int(log))
timezone = "Europe/Kiev"
vremya = datetime.now(pytz.timezone(timezone)).strftime("[%Y-%m-%d %H:%M:%S]")
user = await message.client.get_entity(message.chat_id)
userid = str(user.id)
try:
if message.sender_id == me.id: user.first_name = me.first_name
except: pass
if message.is_private and seechat and userid not in exception and not user.bot and not user.verified:
if message.text:
file = open(f"{self.di}{user.id}.txt", "a", encoding='utf-8')
file.write(f"{user.first_name} >> {message.text} << {vremya}\n\n")
if message.sender_id == me.id:
return
if message.video:
try:
await message.forward_to(chat.id)
except:
file = message.file.name or "huita" + message.file.ext
await message.download_media(file)
await message.client.send_message(chat.id, f"<b>Video from</b> <a href='tg://user?id={user.id}'>{user.first_name}</a>:")
await message.client.send_file(chat.id, file)
os.remove(file)
elif message.photo:
file = io.BytesIO()
file.name = message.file.name or f"SeeChat{message.file.ext}"
await message.client.download_file(message, file)
file.seek(0)
await message.client.send_message(chat.id, f"<b>Picture from</b> <a href='tg://user?id={user.id}'>{user.first_name}</a>:")
await message.client.send_file(chat.id, file, force_document=False)
elif message.voice or message.audio or message.video_note or message.document:
await message.client.send_message(chat.id, f"<b>Media from</b> <a href='tg://user?id={user.id}'>{user.first_name}</a>:")
from .. import loader, utils
from datetime import datetime, date, time
from asyncio import sleep
import os, io, asyncio, pytz, requests
@loader.tds
class SeeChatMod(loader.Module):
"""tracking in all PM chats."""
strings={"name": "SeeChat"}
async def client_ready(self, message, db):
self.db = db
self.db.set("SeeChat", "seechat", True)
self.di = "SeeChat/"
if not os.path.exists(self.di):
os.mkdir(self.di)
async def seechatcmd(self, message):
"""use: .seechat | to enable tracking in all PM chats."""
if self.db.get("SeeChat", "seechat") is not True:
await utils.answer(message, "[SeeChat] turned <b>on</b> succesfully.")
self.db.set("SeeChat", "seechat", True)
else:
await utils.answer(message, "[SeeChat] turned <b>off</b> succesfully.")
self.db.set("SeeChat", "seechat", False)
async def setchatcmd(self, message):
"""use: .setchat | to set this chat as a track chat."""
chat = await message.client.get_entity(message.to_id)
self.db.set("SeeChat", "log", str(chat.id))
await utils.answer(message, f"<b>this chat was set as a chat for tracks.</b>")
async def seechatscmd(self, message):
"""use: .seechats | to see the list of tracking people."""
await utils.answer(message, "wait a second..")
chats = ""
for userId in enumerate(os.listdir(self.di)):
try:
user = await message.client.get_entity(int(userId[1][:-4]))
except: pass
if not user.deleted:
chats += f"{userId[0]+1} • <a href=tg://user?id={user.id}>{user.first_name}</a> ID: [<code>{user.id}</code>]\n"
else:
chats += f"{userId[0]+1} • deleted account ID: [<code>{user.id}</code>]\n"
await utils.answer(message, "<b>Tracking users:</b>\n\n" + chats)
async def gseecmd(self, message):
"""use: .gsee {id} | to get the tracked file."""
args = utils.get_args_raw(message)
if not args:
return await utils.answer(message, "<b>what about args?</b>")
try:
user = await message.client.get_entity(int(args))
await utils.answer(message, f"<b>PM file with: <code>{user.first_name}</code></b>")
await message.client.send_file(message.to_id, f"{self.di}{args}.txt")
except: return await utils.answer(message, "<b>file is empty.</b>")
async def delseecmd(self, message):
"""use: .delsee {id} | to delete the tracked file."""
args = utils.get_args_raw(message)
if not args:
return await utils.answer(message, "<b>what about args?</b>")
if args == "all":
os.system(f"rm -rf {self.di}*")
await utils.answer(message, "<b>all PM chats file has been successfully deleted.</b>")
else:
try:
user = await message.client.get_entity(int(args))
await utils.answer(message, f"<b>the chat file has been deleted with: <code>{user.first_name}</code></b>")
os.remove(f"{self.di}{args}.txt")
except: return await utils.answer(message, "<b>file can't be deleted.</b>")
async def excseecmd(self, message):
"""use: .excsee {id} | to add / remove user from exclude tracking."""
exception = self.db.get("SeeChat", "exception", [])
args = utils.get_args_raw(message)
if not args:
return await utils.answer(message, "<b>what about args?</b>")
if args == "clear":
self.db.set("SeeChat", "exception", [])
return await utils.answer(message, "<b>the exclusion list was cleared successfully.</b>")
try:
user = await message.client.get_entity(int(args))
if str(user.id) not in exception:
exception.append(str(user.id))
await utils.answer(message, f"<b>{user.first_name}, has been added to the list of exclusions.</b>")
os.remove(f"{self.di}{user.id}.txt")
else:
exception.remove(str(user.id))
await utils.answer(message, f"<b>{user.first_name}, has been removed from the list of exclusions.</b>")
self.db.set("SeeChat", "exception", exception)
except: return await utils.answer(message, "<b>failed to remove user from the list of exclusions</b>")
async def exclistcmd(self, message):
"""use: .exclist | to see the list of exceptions."""
exception = self.db.get("SeeChat", "exception", [])
users = ""
try:
for exc in enumerate(exception):
user = await message.client.get_entity(int(exc[1]))
users += f"{exc[0]+1} • <a href=tg://user?id={user.id}>{user.first_name}</a> ID: [<code>{user.id}</code>]\n"
await utils.answer(message, "<b>List of exclusions:</b>\n\n" + users)
except Exception as e: return await utils.answer(message, f"<b>the list of users is empty.</b> {e}")
async def watcher(self, message):
me = await message.client.get_me()
seechat = self.db.get("SeeChat", "seechat")
exception = self.db.get("SeeChat", "exception", [])
log = self.db.get("SeeChat", "log", str(me.id))
chat = await message.client.get_entity(int(log))
timezone = "Europe/Kiev"
vremya = datetime.now(pytz.timezone(timezone)).strftime("[%Y-%m-%d %H:%M:%S]")
user = await message.client.get_entity(message.chat_id)
userid = str(user.id)
try:
if message.sender_id == me.id: user.first_name = me.first_name
except: pass
if message.is_private and seechat and userid not in exception and not user.bot and not user.verified:
if message.text:
file = open(f"{self.di}{user.id}.txt", "a", encoding='utf-8')
file.write(f"{user.first_name} >> {message.text} << {vremya}\n\n")
if message.sender_id == me.id:
return
if message.video:
try:
await message.forward_to(chat.id)
except:
file = message.file.name or "huita" + message.file.ext
await message.download_media(file)
await message.client.send_message(chat.id, f"<b>Video from</b> <a href='tg://user?id={user.id}'>{user.first_name}</a>:")
await message.client.send_file(chat.id, file)
os.remove(file)
elif message.photo:
file = io.BytesIO()
file.name = message.file.name or f"SeeChat{message.file.ext}"
await message.client.download_file(message, file)
file.seek(0)
await message.client.send_message(chat.id, f"<b>Picture from</b> <a href='tg://user?id={user.id}'>{user.first_name}</a>:")
await message.client.send_file(chat.id, file, force_document=False)
elif message.voice or message.audio or message.video_note or message.document:
await message.client.send_message(chat.id, f"<b>Media from</b> <a href='tg://user?id={user.id}'>{user.first_name}</a>:")
await message.forward_to(chat.id)

File diff suppressed because one or more lines are too long

View File

@@ -1,102 +1,102 @@
# meta developer: @trololo_1
import asyncio
import logging
from .. import loader, utils
logger = logging.getLogger(__name__)
@loader.tds
class VijenerMod(loader.Module):
"""Конвертация текста в шифр Виженеря и наоборот. """
strings = {
"name": "Vizjener"
}
@loader.unrestricted
async def tovizcmd(self, message):
""".toviz {ключ} {текст}"""
try:
alphabet = ['','а', 'б', 'в', 'г', 'д', 'е', 'ё', 'ж', 'з', 'и', 'й', 'к', 'л', 'м', 'н', 'о', 'п', 'р', 'с', 'т', 'у', 'ф', 'х', 'ц', 'ч', 'ш', 'щ', 'ъ', 'ы', 'ь', 'э', 'ю', 'я']
text = utils.get_args_raw(message)
key = str(text.split(' ')[0])
shifr = str(text.split(' ', maxsplit=1)[1])
key_list = []
shifr_list = []
for word in key.split():
for letter in word.lower():
key_list.append(letter)
for word in shifr.split():
for letter in word.lower():
shifr_list.append(letter)
shifr_list.append(' ')
key_index = 0
sms = ''
for i in range(0, len(shifr_list )):
if shifr_list[i].isalpha():
if key_index == len(key_list):
key_index = 0
a = alphabet.index(shifr_list[i])
b = alphabet.index(key_list[key_index])
result = int(a) + int(b)
if result >= 33:
result=result%33
if result == 0:
result=33
sms+=alphabet[result]
key_index+=1
else:
sms+=shifr_list[i]
await message.edit(sms)
except:
await message.edit('<strong> ERROR. Возможно вы ввели некириллические символы, либо ввели в ключ что то кроме буквенных символов. </strong>')
@loader.unrestricted
async def tounvizcmd(self, message):
""".tounviz {ключ} {текст}"""
try:
alphabet = ['', 'а', 'б', 'в', 'г', 'д', 'е', 'ё', 'ж', 'з', 'и', 'й', 'к', 'л', 'м', 'н', 'о', 'п', 'р', 'с', 'т', 'у', 'ф', 'х', 'ц', 'ч', 'ш', 'щ', 'ъ', 'ы', 'ь', 'э', 'ю', 'я']
text = utils.get_args_raw(message)
key = str(text.split(' ')[0])
shifr = str(text.split(' ', maxsplit=1)[1])
key_list = []
shifr_list = []
for word in key.split():
for letter in word.lower():
key_list.append(letter)
for word in shifr.split():
for letter in word.lower():
shifr_list.append(letter)
shifr_list.append(' ')
key_index = 0
sms = ''
for i in range(0, len(shifr_list )):
if shifr_list[i].isalpha():
if key_index == len(key_list):
key_index = 0
a = alphabet.index(shifr_list[i])
b = alphabet.index(key_list[key_index])
if int(b) == 33:
result = int(a) % int(b)
else:
result = int(a) - int(b)
if result < 0:
result=result-1
if result == 0:
result=33
sms+=alphabet[result]
key_index+=1
else:
sms+=shifr_list[i]
await message.edit(sms)
except:
await message.edit('<strong> ERROR. Возможно вы ввели некириллические символы, либо ввели в ключ что то кроме буквенных символов. </strong>')
# meta developer: @trololo_1
import asyncio
import logging
from .. import loader, utils
logger = logging.getLogger(__name__)
@loader.tds
class VijenerMod(loader.Module):
"""Конвертация текста в шифр Виженеря и наоборот. """
strings = {
"name": "Vizjener"
}
@loader.unrestricted
async def tovizcmd(self, message):
""".toviz {ключ} {текст}"""
try:
alphabet = ['','а', 'б', 'в', 'г', 'д', 'е', 'ё', 'ж', 'з', 'и', 'й', 'к', 'л', 'м', 'н', 'о', 'п', 'р', 'с', 'т', 'у', 'ф', 'х', 'ц', 'ч', 'ш', 'щ', 'ъ', 'ы', 'ь', 'э', 'ю', 'я']
text = utils.get_args_raw(message)
key = str(text.split(' ')[0])
shifr = str(text.split(' ', maxsplit=1)[1])
key_list = []
shifr_list = []
for word in key.split():
for letter in word.lower():
key_list.append(letter)
for word in shifr.split():
for letter in word.lower():
shifr_list.append(letter)
shifr_list.append(' ')
key_index = 0
sms = ''
for i in range(0, len(shifr_list )):
if shifr_list[i].isalpha():
if key_index == len(key_list):
key_index = 0
a = alphabet.index(shifr_list[i])
b = alphabet.index(key_list[key_index])
result = int(a) + int(b)
if result >= 33:
result=result%33
if result == 0:
result=33
sms+=alphabet[result]
key_index+=1
else:
sms+=shifr_list[i]
await message.edit(sms)
except:
await message.edit('<strong> ERROR. Возможно вы ввели некириллические символы, либо ввели в ключ что то кроме буквенных символов. </strong>')
@loader.unrestricted
async def tounvizcmd(self, message):
""".tounviz {ключ} {текст}"""
try:
alphabet = ['', 'а', 'б', 'в', 'г', 'д', 'е', 'ё', 'ж', 'з', 'и', 'й', 'к', 'л', 'м', 'н', 'о', 'п', 'р', 'с', 'т', 'у', 'ф', 'х', 'ц', 'ч', 'ш', 'щ', 'ъ', 'ы', 'ь', 'э', 'ю', 'я']
text = utils.get_args_raw(message)
key = str(text.split(' ')[0])
shifr = str(text.split(' ', maxsplit=1)[1])
key_list = []
shifr_list = []
for word in key.split():
for letter in word.lower():
key_list.append(letter)
for word in shifr.split():
for letter in word.lower():
shifr_list.append(letter)
shifr_list.append(' ')
key_index = 0
sms = ''
for i in range(0, len(shifr_list )):
if shifr_list[i].isalpha():
if key_index == len(key_list):
key_index = 0
a = alphabet.index(shifr_list[i])
b = alphabet.index(key_list[key_index])
if int(b) == 33:
result = int(a) % int(b)
else:
result = int(a) - int(b)
if result < 0:
result=result-1
if result == 0:
result=33
sms+=alphabet[result]
key_index+=1
else:
sms+=shifr_list[i]
await message.edit(sms)
except:
await message.edit('<strong> ERROR. Возможно вы ввели некириллические символы, либо ввели в ключ что то кроме буквенных символов. </strong>')

View File

@@ -1,66 +1,66 @@
# for more info: https://murix.ru/files/ftg
# by xadjilut, 2021
# Изменил для мубота @trololo_1
from .. import loader, utils
import asyncio
@loader.tds
class FarmMooBotMod(loader.Module):
"""Для автоматического фарминга мубота.\n отправляет мус, кликает, затем мук, кликает. и всё по циклу."""
strings = {
'name': 'FarmMooBot',
}
def __init__(self):
self.name = self.strings['name']
async def client_ready(self, client, db):
self.client = client
self.db = db
self.moo = 1606812809
if not self.db.get(self.name, "status", False):
self.db.set(self.name, 'status', {'status': False, 'time': None, 'btn1': None, 'btn2': None})
async def mbfoncmd(self, message):
"""Запустить автофарминг.\n.mbfon {интервал отправки} {первая кнопка} {вторая кнопка} | кнопки указывать по очередности."""
args = utils.get_args_raw(message)
if not args: return await utils.answer(message, 'Где аргументы?')
args = args.split(' ')
if not args[0].isdigit() or not args[1].isdigit() or not args[2].isdigit(): return await utils.answer(message, 'Один или более аргументов указан не корректно. Вводите только числовые значения!!')
status = self.db.get(self.name, "status", False)
if status['time']: return await utils.answer(message, 'Уже запущено.')
self.db.set(self.name, "status", {'status': True, 'time': args[0], 'btn1': args[1], 'btn2': args[2]})
await self.client.send_message(self.moo, 'мус')
await utils.answer(message, 'Запущено.')
async def mbfoffcmd(self, message):
"""Остановить автофармин."""
self.db.set(self.name, 'status', {'status': False, 'time': None, 'btn1': None, 'btn2': None})
await utils.answer(message, 'Остановлено.')
async def watcher(self, message):
try:
chat = utils.get_chat_id(message)
if chat != self.moo: return
args = self.db.get(self.name, 'status', False)
if not args: return
if not args['status'] or message.sender_id != self.moo or message.sticker: return
try:
if not '🐮' in message.text and '<strong>' in message.text and args['status']: await message.click(int(args['btn1']) - 1)
await asyncio.sleep(3)
if args['status'] and not '🐮' in message.text and '<strong>' in message.text: await self.client.send_message(self.moo, 'мук')
except:
if args['status']: await self.client.send_message(self.moo, 'мус')
if not '🐮' in message.text and '<strong>' in message.text and args['status']: await message.click(int(args['btn1']) - 1)
try:
if '🐮' in message.text or args['status']: await message.click(int(args['btn2']) - 1)
except:
if args['status']: await self.client.send_message(self.moo, 'мук')
if '🐮' in message.text and args['status']: await message.click(int(args['btn2']) - 1)
await asyncio.sleep(int(args['time']))
if args['status'] and '🐮' in message.text: await self.client.send_message(self.moo, 'мус')
except: pass
# for more info: https://murix.ru/files/ftg
# by xadjilut, 2021
# Изменил для мубота @trololo_1
from .. import loader, utils
import asyncio
@loader.tds
class FarmMooBotMod(loader.Module):
"""Для автоматического фарминга мубота.\n отправляет мус, кликает, затем мук, кликает. и всё по циклу."""
strings = {
'name': 'FarmMooBot',
}
def __init__(self):
self.name = self.strings['name']
async def client_ready(self, client, db):
self.client = client
self.db = db
self.moo = 1606812809
if not self.db.get(self.name, "status", False):
self.db.set(self.name, 'status', {'status': False, 'time': None, 'btn1': None, 'btn2': None})
async def mbfoncmd(self, message):
"""Запустить автофарминг.\n.mbfon {интервал отправки} {первая кнопка} {вторая кнопка} | кнопки указывать по очередности."""
args = utils.get_args_raw(message)
if not args: return await utils.answer(message, 'Где аргументы?')
args = args.split(' ')
if not args[0].isdigit() or not args[1].isdigit() or not args[2].isdigit(): return await utils.answer(message, 'Один или более аргументов указан не корректно. Вводите только числовые значения!!')
status = self.db.get(self.name, "status", False)
if status['time']: return await utils.answer(message, 'Уже запущено.')
self.db.set(self.name, "status", {'status': True, 'time': args[0], 'btn1': args[1], 'btn2': args[2]})
await self.client.send_message(self.moo, 'мус')
await utils.answer(message, 'Запущено.')
async def mbfoffcmd(self, message):
"""Остановить автофармин."""
self.db.set(self.name, 'status', {'status': False, 'time': None, 'btn1': None, 'btn2': None})
await utils.answer(message, 'Остановлено.')
async def watcher(self, message):
try:
chat = utils.get_chat_id(message)
if chat != self.moo: return
args = self.db.get(self.name, 'status', False)
if not args: return
if not args['status'] or message.sender_id != self.moo or message.sticker: return
try:
if not '🐮' in message.text and '<strong>' in message.text and args['status']: await message.click(int(args['btn1']) - 1)
await asyncio.sleep(3)
if args['status'] and not '🐮' in message.text and '<strong>' in message.text: await self.client.send_message(self.moo, 'мук')
except:
if args['status']: await self.client.send_message(self.moo, 'мус')
if not '🐮' in message.text and '<strong>' in message.text and args['status']: await message.click(int(args['btn1']) - 1)
try:
if '🐮' in message.text or args['status']: await message.click(int(args['btn2']) - 1)
except:
if args['status']: await self.client.send_message(self.moo, 'мук')
if '🐮' in message.text and args['status']: await message.click(int(args['btn2']) - 1)
await asyncio.sleep(int(args['time']))
if args['status'] and '🐮' in message.text: await self.client.send_message(self.moo, 'мус')
except: pass

View File

@@ -1,91 +1,91 @@
# meta developer: @trololo_1
from .. import loader, utils
import subprocess
try:
from glitch_this import ImageGlitcher
except:
mod_inst = subprocess.Popen("pip install glitch-this", shell=True)
mod_inst.wait()
from glitch_this import ImageGlitcher
class glitchMod(loader.Module):
"Накладывает на изображения глитч эффект."
strings = {"name":"glitchMod"}
async def client_ready(self, message, db):
self.db=db
if not self.db.get("glitch", "frames", False):
self.db.set("glitch", "frames", 23)
if not self.db.get("glitch", "step", False):
self.db.set("glitch", "step", 1)
if not self.db.get("glitch", "duration", False):
self.db.set("glitch", "duration", 200)
if not self.db.get("glitch", "loop", False):
self.db.set("glitch", "loop", 0)
async def glitchcmd(self, message):
"Используй: \n.glitch {аргументы} {реплай на фото} {уровень сдвига 0.0 - 10.0} \nЧтобы наложить эффект на фото.\nИспользуй: \n.glitch\nчтобы посмотреть аргументы."
args = utils.get_args_raw(message)
reply = await message.get_reply_message()
glitcher = ImageGlitcher()
args_glitch = ['-g', '-c', '-sl']
FRAMES = self.db.get("glitch", "frames")
STEP = self.db.get("glitch", "step")
DURATION = self.db.get("glitch", "duration")
LOOP =self.db.get("glitch", "loop")
gif_output = False
color = False
lines = False
amount = 1.5
if not reply and not args:
message = await utils.answer(message, f'Аргументы:\n• <code>{args_glitch[0]}</code> --- возвращает изображение как гифку. \n• <code>{args_glitch[1]}</code> --- добавляет эффект смещения цвета. \n• <code>{args_glitch[2]}</code> --- добавляет эффект линий.')
return
if not reply.photo and not reply.sticker:
message = await utils.answer(message, 'Реплай должен быть на фото.')
return
if args:
args = [i for i in args.split(' ')]
try:
amount = float(args[-1])
except ValueError:
amount = 1.5
gif_output = True if args_glitch[0] in args else False
color = True if args_glitch[1] in args else False
lines = True if args_glitch[2] in args else False
file = reply.file.name if reply.file.name else "huita" + reply.file.ext
await reply.download_media(file)
b = glitcher.glitch_image(file, amount, color_offset = color, gif = gif_output, scan_lines = lines, step = STEP, frames = FRAMES)
if gif_output:
b[0].save('glitch_image.gif', format = 'GIF', append_images = b[1:], save_all = True, duration = DURATION, loop = LOOP )
await message.client.send_file(message.to_id, 'glitch_image.gif')
else:
b.save('glitch_image.jpg')
await message.client.send_file(message.to_id, 'glitch_image.jpg')
await message.delete()
async def glconfcmd(self, message):
"Настройка глитч эффекта."
args = utils.get_args_raw(message)
glitch_opt = ["frames", "step", "duration", "loop"]
if not args:
message = await utils.answer(message, f"Доступные настройки:\n• <code>{glitch_opt[0]}</code> --- количество кадров.\n• <code>{glitch_opt[1]}</code> --- количество кадров без глюка(значение 1 ставит все кадры с глюком).\n• <code>{glitch_opt[2]}</code> --- длительность кадра(в миллисекундах).\n• <code>{glitch_opt[3]}</code> --- количество зацикливаний(значение 0 бесконечно зацикливает).\n\nИспользовать так:\noption = value")
return
args = [ i for i in args.split('=')]
for i in glitch_opt:
if i == args[0].strip().lower():
try:
self.db.set("glitch", i, int(args[1]))
except ValueError:
message = await utils.answer(message, 'Значение было не числовым.')
return
message = await utils.answer(message, f'Опция <b>{i}</b> успешно установлена со значением <b>{args[1]}</b>')
return
message = await utils.answer(message, 'Нет совпадений опций или неправильное значение.')
return
# meta developer: @trololo_1
from .. import loader, utils
import subprocess
try:
from glitch_this import ImageGlitcher
except:
mod_inst = subprocess.Popen("pip install glitch-this", shell=True)
mod_inst.wait()
from glitch_this import ImageGlitcher
class glitchMod(loader.Module):
"Накладывает на изображения глитч эффект."
strings = {"name":"glitchMod"}
async def client_ready(self, message, db):
self.db=db
if not self.db.get("glitch", "frames", False):
self.db.set("glitch", "frames", 23)
if not self.db.get("glitch", "step", False):
self.db.set("glitch", "step", 1)
if not self.db.get("glitch", "duration", False):
self.db.set("glitch", "duration", 200)
if not self.db.get("glitch", "loop", False):
self.db.set("glitch", "loop", 0)
async def glitchcmd(self, message):
"Используй: \n.glitch {аргументы} {реплай на фото} {уровень сдвига 0.0 - 10.0} \nЧтобы наложить эффект на фото.\nИспользуй: \n.glitch\nчтобы посмотреть аргументы."
args = utils.get_args_raw(message)
reply = await message.get_reply_message()
glitcher = ImageGlitcher()
args_glitch = ['-g', '-c', '-sl']
FRAMES = self.db.get("glitch", "frames")
STEP = self.db.get("glitch", "step")
DURATION = self.db.get("glitch", "duration")
LOOP =self.db.get("glitch", "loop")
gif_output = False
color = False
lines = False
amount = 1.5
if not reply and not args:
message = await utils.answer(message, f'Аргументы:\n• <code>{args_glitch[0]}</code> --- возвращает изображение как гифку. \n• <code>{args_glitch[1]}</code> --- добавляет эффект смещения цвета. \n• <code>{args_glitch[2]}</code> --- добавляет эффект линий.')
return
if not reply.photo and not reply.sticker:
message = await utils.answer(message, 'Реплай должен быть на фото.')
return
if args:
args = [i for i in args.split(' ')]
try:
amount = float(args[-1])
except ValueError:
amount = 1.5
gif_output = True if args_glitch[0] in args else False
color = True if args_glitch[1] in args else False
lines = True if args_glitch[2] in args else False
file = reply.file.name if reply.file.name else "huita" + reply.file.ext
await reply.download_media(file)
b = glitcher.glitch_image(file, amount, color_offset = color, gif = gif_output, scan_lines = lines, step = STEP, frames = FRAMES)
if gif_output:
b[0].save('glitch_image.gif', format = 'GIF', append_images = b[1:], save_all = True, duration = DURATION, loop = LOOP )
await message.client.send_file(message.to_id, 'glitch_image.gif')
else:
b.save('glitch_image.jpg')
await message.client.send_file(message.to_id, 'glitch_image.jpg')
await message.delete()
async def glconfcmd(self, message):
"Настройка глитч эффекта."
args = utils.get_args_raw(message)
glitch_opt = ["frames", "step", "duration", "loop"]
if not args:
message = await utils.answer(message, f"Доступные настройки:\n• <code>{glitch_opt[0]}</code> --- количество кадров.\n• <code>{glitch_opt[1]}</code> --- количество кадров без глюка(значение 1 ставит все кадры с глюком).\n• <code>{glitch_opt[2]}</code> --- длительность кадра(в миллисекундах).\n• <code>{glitch_opt[3]}</code> --- количество зацикливаний(значение 0 бесконечно зацикливает).\n\nИспользовать так:\noption = value")
return
args = [ i for i in args.split('=')]
for i in glitch_opt:
if i == args[0].strip().lower():
try:
self.db.set("glitch", i, int(args[1]))
except ValueError:
message = await utils.answer(message, 'Значение было не числовым.')
return
message = await utils.answer(message, f'Опция <b>{i}</b> успешно установлена со значением <b>{args[1]}</b>')
return
message = await utils.answer(message, 'Нет совпадений опций или неправильное значение.')
return

View File

@@ -1,75 +1,75 @@
# meta developer: @trololo_1
# Github: trololo65
import subprocess
try:
from translatepy import Translator
except:
mod_inst = subprocess.Popen("pip install --upgrade translatepy", shell=True)
mod_inst.wait()
from translatepy import Translator
from translatepy.translators.google import GoogleTranslate
from translatepy.translators.bing import BingTranslate
from translatepy.translators.yandex import YandexTranslate
from translatepy.translators.reverso import ReversoTranslate
from translatepy.translators.deepl import DeeplTranslate
from translatepy.translators.libre import LibreTranslate
from translatepy.translators.translatecom import TranslateComTranslate
from translatepy.translators.mymemory import MyMemoryTranslate
from .. import loader, utils
@loader.tds
class translatepyMod(loader.Module):
"""Перевод текста. Автоматическое распознование языка."""
strings = {'name': 'translatepy'}
async def client_ready(self, client, db):
self.db = db
if not self.db.get('translatepy', 'services', False):
self.db.set('translatepy', 'services', {'google': True, 'bing': False, 'yandex': False, 'reverso': False, 'libre': False, 'translatecom': False, 'deepl': False, 'mymemory': False,})
async def trnsltcmd(self, message):
"""Используй: .trnslt {язык} {текст или реплай}"""
args = utils.get_args_raw(message)
reply = await message.get_reply_message()
args_list = args.split(' ', maxsplit = 1)
sL = self.db.get('translatepy', 'services') #serviceList
if not args:
await utils.answer(message, 'Где аргументы?')
return
if not reply and len(args_list) <= 1 :
await utils.answer(message, 'Нет реплая и текста для перевода.')
return
if len(args_list) == 1:
text = reply.raw_text
else:
text = args_list[1]
lng = args_list[0]
sL_class = {'google': GoogleTranslate(), 'yandex': YandexTranslate(), 'bing': BingTranslate(), 'reverso': ReversoTranslate(), 'deepl': DeeplTranslate(), 'libre': LibreTranslate(), 'translatecom': TranslateComTranslate(), 'mymemory': MyMemoryTranslate()}
try:
sL_active = str(list(sL.keys())[list(sL.values()).index(True)]) # Поиск установленного сервера
t = sL_class[sL_active]
except:
t = Translator()
res = t.translate(text,lng) # result translate
await utils.answer(message, f'<b>[{res.service}: {res.source_language} -> {lng}]</b>\n<code>{res.result}</code>')
async def tservicecmd(self, message):
""" Установка сервиса для перевода.\nИспользуй .tservice list для просмотра всех сервисов"""
args = utils.get_args_raw(message)
sL = self.db.get('translatepy', 'services') #serviceList
service = str(list(sL.keys())[list(sL.values()).index(True)]) # Поиск установленного сервера
if not args:
await utils.answer(message, '<b>Установка:</b> <code>.tservice {сервис}</code>'+f'\n<b>Сервис:</b> <code>{service}</code>')
elif args == 'list':
await utils.answer(message, '<b>Достуные сервисы:</b>\n<code>Google</code>\n<code>Bing</code>\n<code>Yandex</code>\n<code>Reverso</code>\n<code>Deepl</code>\n<code>Libre</code>\n<code>TranslateCom</code>\n<code>MyMemory</code>')
elif args.lower() in sL:
for key, value in sL.items(): # Переборка словаря
sL[key] = False # Установка всех значений на False
sL[args.lower()] = True # Установка нужного значения на True
self.db.set('translatepy', 'services', sL)
await utils.answer(message, f'Сервис <b>{args}</b> успешно установлен.')
else:
await utils.answer(message, f'Неверно введён сервис.')
# meta developer: @trololo_1
# Github: trololo65
import subprocess
try:
from translatepy import Translator
except:
mod_inst = subprocess.Popen("pip install --upgrade translatepy", shell=True)
mod_inst.wait()
from translatepy import Translator
from translatepy.translators.google import GoogleTranslate
from translatepy.translators.bing import BingTranslate
from translatepy.translators.yandex import YandexTranslate
from translatepy.translators.reverso import ReversoTranslate
from translatepy.translators.deepl import DeeplTranslate
from translatepy.translators.libre import LibreTranslate
from translatepy.translators.translatecom import TranslateComTranslate
from translatepy.translators.mymemory import MyMemoryTranslate
from .. import loader, utils
@loader.tds
class translatepyMod(loader.Module):
"""Перевод текста. Автоматическое распознование языка."""
strings = {'name': 'translatepy'}
async def client_ready(self, client, db):
self.db = db
if not self.db.get('translatepy', 'services', False):
self.db.set('translatepy', 'services', {'google': True, 'bing': False, 'yandex': False, 'reverso': False, 'libre': False, 'translatecom': False, 'deepl': False, 'mymemory': False,})
async def trnsltcmd(self, message):
"""Используй: .trnslt {язык} {текст или реплай}"""
args = utils.get_args_raw(message)
reply = await message.get_reply_message()
args_list = args.split(' ', maxsplit = 1)
sL = self.db.get('translatepy', 'services') #serviceList
if not args:
await utils.answer(message, 'Где аргументы?')
return
if not reply and len(args_list) <= 1 :
await utils.answer(message, 'Нет реплая и текста для перевода.')
return
if len(args_list) == 1:
text = reply.raw_text
else:
text = args_list[1]
lng = args_list[0]
sL_class = {'google': GoogleTranslate(), 'yandex': YandexTranslate(), 'bing': BingTranslate(), 'reverso': ReversoTranslate(), 'deepl': DeeplTranslate(), 'libre': LibreTranslate(), 'translatecom': TranslateComTranslate(), 'mymemory': MyMemoryTranslate()}
try:
sL_active = str(list(sL.keys())[list(sL.values()).index(True)]) # Поиск установленного сервера
t = sL_class[sL_active]
except:
t = Translator()
res = t.translate(text,lng) # result translate
await utils.answer(message, f'<b>[{res.service}: {res.source_language} -> {lng}]</b>\n<code>{res.result}</code>')
async def tservicecmd(self, message):
""" Установка сервиса для перевода.\nИспользуй .tservice list для просмотра всех сервисов"""
args = utils.get_args_raw(message)
sL = self.db.get('translatepy', 'services') #serviceList
service = str(list(sL.keys())[list(sL.values()).index(True)]) # Поиск установленного сервера
if not args:
await utils.answer(message, '<b>Установка:</b> <code>.tservice {сервис}</code>'+f'\n<b>Сервис:</b> <code>{service}</code>')
elif args == 'list':
await utils.answer(message, '<b>Достуные сервисы:</b>\n<code>Google</code>\n<code>Bing</code>\n<code>Yandex</code>\n<code>Reverso</code>\n<code>Deepl</code>\n<code>Libre</code>\n<code>TranslateCom</code>\n<code>MyMemory</code>')
elif args.lower() in sL:
for key, value in sL.items(): # Переборка словаря
sL[key] = False # Установка всех значений на False
sL[args.lower()] = True # Установка нужного значения на True
self.db.set('translatepy', 'services', sL)
await utils.answer(message, f'Сервис <b>{args}</b> успешно установлен.')
else:
await utils.answer(message, f'Неверно введён сервис.')

View File

@@ -1,83 +1,83 @@
# 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(['<code>'+str(i)+'</code>' 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'Ид <code>{str(user)}</code> исключен.')
else:
users_list.append(user)
await utils.answer(message, f'Ид <code>{str(user)}</code> добавлен.')
await 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?://)?vm\.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
# 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(['<code>'+str(i)+'</code>' 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'Ид <code>{str(user)}</code> исключен.')
else:
users_list.append(user)
await utils.answer(message, f'Ид <code>{str(user)}</code> добавлен.')
await 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?://)?vm\.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