From ea3567f38a8cba89d3dc0ac43acd8d42e3c9a625 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Thu, 18 Jun 2026 02:52:50 +0000 Subject: [PATCH] Added and updated repositories 2026-06-18 02:52:50 --- AmoreForever/amoremods/README.md | 3 - AmoreForever/amoremods/abstract.py | 53 --- AmoreForever/amoremods/activity.py | 33 -- AmoreForever/amoremods/aeconv.py | 287 ------------- AmoreForever/amoremods/alarm.py | 225 ---------- AmoreForever/amoremods/amethyste.py | 118 ----- AmoreForever/amoremods/amoreinfo.py | 258 ----------- AmoreForever/amoremods/animevoices.py | 473 --------------------- AmoreForever/amoremods/autoprofile.py | 283 ------------ AmoreForever/amoremods/besafe.py | 124 ------ AmoreForever/amoremods/birthdaywish.py | 229 ---------- AmoreForever/amoremods/bull.py | 100 ----- AmoreForever/amoremods/createlinks.py | 158 ------- AmoreForever/amoremods/dtwr.py | 73 ---- AmoreForever/amoremods/facts.py | 48 --- AmoreForever/amoremods/figlet.py | 67 --- AmoreForever/amoremods/fileext.py | 48 --- AmoreForever/amoremods/fragment_checker.py | 37 -- AmoreForever/amoremods/full.txt | 40 -- AmoreForever/amoremods/funquotes.py | 91 ---- AmoreForever/amoremods/hacker.py | 69 --- AmoreForever/amoremods/imgbb.py | 129 ------ AmoreForever/amoremods/inlineping.py | 83 ---- AmoreForever/amoremods/instsave.py | 57 --- AmoreForever/amoremods/jutsu.py | 355 ---------------- AmoreForever/amoremods/leta.py | 155 ------- AmoreForever/amoremods/lexiwiz.py | 249 ----------- AmoreForever/amoremods/my_usernames.py | 27 -- AmoreForever/amoremods/mydiary.py | 296 ------------- AmoreForever/amoremods/nytimer.py | 31 -- AmoreForever/amoremods/phsticker.py | 62 --- AmoreForever/amoremods/poststealer.py | 88 ---- AmoreForever/amoremods/recognition.py | 80 ---- AmoreForever/amoremods/searchpic.py | 34 -- AmoreForever/amoremods/speech.py | 94 ---- AmoreForever/amoremods/telegraphup.py | 70 --- AmoreForever/amoremods/universaltime.py | 98 ----- AmoreForever/amoremods/usernamestealer.py | 214 ---------- AmoreForever/amoremods/wakatime.py | 134 ------ SunnexGB/Heroku-Modules/LiveLyrics.py | 370 ++++++++++++++++ SunnexGB/Heroku-Modules/SpotifyLyrics.py | 285 ------------- SunnexGB/Heroku-Modules/YandexLyrics.py | 352 --------------- 42 files changed, 370 insertions(+), 5710 deletions(-) delete mode 100644 AmoreForever/amoremods/README.md delete mode 100644 AmoreForever/amoremods/abstract.py delete mode 100644 AmoreForever/amoremods/activity.py delete mode 100644 AmoreForever/amoremods/aeconv.py delete mode 100644 AmoreForever/amoremods/alarm.py delete mode 100644 AmoreForever/amoremods/amethyste.py delete mode 100644 AmoreForever/amoremods/amoreinfo.py delete mode 100644 AmoreForever/amoremods/animevoices.py delete mode 100644 AmoreForever/amoremods/autoprofile.py delete mode 100644 AmoreForever/amoremods/besafe.py delete mode 100644 AmoreForever/amoremods/birthdaywish.py delete mode 100644 AmoreForever/amoremods/bull.py delete mode 100644 AmoreForever/amoremods/createlinks.py delete mode 100644 AmoreForever/amoremods/dtwr.py delete mode 100644 AmoreForever/amoremods/facts.py delete mode 100644 AmoreForever/amoremods/figlet.py delete mode 100644 AmoreForever/amoremods/fileext.py delete mode 100644 AmoreForever/amoremods/fragment_checker.py delete mode 100644 AmoreForever/amoremods/full.txt delete mode 100644 AmoreForever/amoremods/funquotes.py delete mode 100644 AmoreForever/amoremods/hacker.py delete mode 100644 AmoreForever/amoremods/imgbb.py delete mode 100644 AmoreForever/amoremods/inlineping.py delete mode 100644 AmoreForever/amoremods/instsave.py delete mode 100644 AmoreForever/amoremods/jutsu.py delete mode 100644 AmoreForever/amoremods/leta.py delete mode 100644 AmoreForever/amoremods/lexiwiz.py delete mode 100644 AmoreForever/amoremods/my_usernames.py delete mode 100644 AmoreForever/amoremods/mydiary.py delete mode 100644 AmoreForever/amoremods/nytimer.py delete mode 100644 AmoreForever/amoremods/phsticker.py delete mode 100644 AmoreForever/amoremods/poststealer.py delete mode 100644 AmoreForever/amoremods/recognition.py delete mode 100644 AmoreForever/amoremods/searchpic.py delete mode 100644 AmoreForever/amoremods/speech.py delete mode 100644 AmoreForever/amoremods/telegraphup.py delete mode 100644 AmoreForever/amoremods/universaltime.py delete mode 100644 AmoreForever/amoremods/usernamestealer.py delete mode 100644 AmoreForever/amoremods/wakatime.py create mode 100644 SunnexGB/Heroku-Modules/LiveLyrics.py delete mode 100644 SunnexGB/Heroku-Modules/SpotifyLyrics.py delete mode 100644 SunnexGB/Heroku-Modules/YandexLyrics.py diff --git a/AmoreForever/amoremods/README.md b/AmoreForever/amoremods/README.md deleted file mode 100644 index 58a5bad..0000000 --- a/AmoreForever/amoremods/README.md +++ /dev/null @@ -1,3 +0,0 @@ -![amoremods](https://te.legra.ph/file/8600de18766a556b2f78e.jpg) -# amoremods -My mods for userbot diff --git a/AmoreForever/amoremods/abstract.py b/AmoreForever/amoremods/abstract.py deleted file mode 100644 index 63fd618..0000000 --- a/AmoreForever/amoremods/abstract.py +++ /dev/null @@ -1,53 +0,0 @@ -# █ █ █ █▄▀ ▄▀█ █▀▄▀█ █▀█ █▀█ █ █ -# █▀█ █ █ █ █▀█ █ ▀ █ █▄█ █▀▄ █▄█ - -# 🔒 Licensed under the GNU GPLv3 -# 🌐 https://www.gnu.org/licenses/agpl-3.0.html -# 👤 https://t.me/hikamoru - -# meta developer: @hikamorumods -# meta pic: https://te.legra.ph/file/868a280910e7f61f6ab0e.png -# meta banner: https://raw.githubusercontent.com/AmoreForever/assets/master/Abstract.jpg - - -from .. import utils, loader - -chat = "@aeabstractbot" - - -class AbstractMod(loader.Module): - """Write a beautiful summary on a notebook""" - - strings = { - "name": "Abstract", - "processing": ( - "🕔 Processing..." - ), - } - - @loader.owner - @loader.command(ru_doc="<текст> - Создать конспект") - async def konspcmd(self, message): - """ - Create summary""" - text = utils.get_args_raw(message) - message = await utils.answer(message, self.strings("processing")) - async with self._client.conversation(chat) as conv: - msgs = [] - msgs += [await conv.send_message("/start")] - msgs += [await conv.get_response()] - msgs += [await conv.send_message(text)] - m = await conv.get_response() - - await self._client.send_file( - message.peer_id, - m.media, - reply_to=message.reply_to_msg_id, - ) - - for msg in msgs + [m]: - await msg.delete() - - if message.out: - await message.delete() - - await self.client.delete_dialog(chat) diff --git a/AmoreForever/amoremods/activity.py b/AmoreForever/amoremods/activity.py deleted file mode 100644 index eec04cc..0000000 --- a/AmoreForever/amoremods/activity.py +++ /dev/null @@ -1,33 +0,0 @@ -# █ █ █ █▄▀ ▄▀█ █▀▄▀█ █▀█ █▀█ █ █ -# █▀█ █ █ █ █▀█ █ ▀ █ █▄█ █▀▄ █▄█ - -# 🔒 Licensed under the GNU GPLv3 -# 🌐 https://www.gnu.org/licenses/agpl-3.0.html -# 👤 https://t.me/hikamoru - -# meta developer: @hikamorumods -# meta banner: https://raw.githubusercontent.com/AmoreForever/assets/master/Activity.jpg -# requires: deep_translator - -import requests -import deep_translator -from .. import loader, utils - - -def generate_activity(): - return requests.get("http://api.farkhodovme.tk/activity/en").json()['activity'] - - -class Activity(loader.Module): - """Generate activity if you're bored""" - - strings = {"name": "Activity", "activity": "⛩ Activity: {}", "lang": "en"} - strings_ru = {"activity": "⛩ Занятие: {}", "lang": "ru"} - strings_uz = {"activity": "⛩ Harakat: {}", "lang": "uz"} - - @loader.command(ru_doc="Сгенерировать занятие", uz_doc="Harakat yaratish") - async def activity(self, message): - """Generate activity""" - res = (deep_translator.GoogleTranslator(source="auto", target=self.strings["lang"]).translate(generate_activity()) if self.strings["lang"] != "en" else generate_activity()) - txt = self.strings['activity'].format(res) - await utils.answer(message, txt) \ No newline at end of file diff --git a/AmoreForever/amoremods/aeconv.py b/AmoreForever/amoremods/aeconv.py deleted file mode 100644 index 658e7b2..0000000 --- a/AmoreForever/amoremods/aeconv.py +++ /dev/null @@ -1,287 +0,0 @@ -# █ █ █ █▄▀ ▄▀█ █▀▄▀█ █▀█ █▀█ █ █ -# █▀█ █ █ █ █▀█ █ ▀ █ █▄█ █▀▄ █▄█ - -# 🔒 Licensed under the GNU GPLv3 -# 🌐 https://www.gnu.org/licenses/agpl-3.0.html -# 👤 https://t.me/hikamoru - -# meta developer: @hikamorumods -# meta banner: https://github.com/AmoreForever/assets/blob/master/Aeconv.jpg?raw=true -# meta pic: https://cdn-icons-png.flaticon.com/512/5670/5670084.png - -import re -import logging - -from bs4 import BeautifulSoup as bs -from requests import get -from asyncio import sleep -from asyncio.exceptions import TimeoutError -from hikkatl.tl.types import Message -from hikkatl.errors.common import AlreadyInConversationError - -from .. import utils, loader -from ..inline.types import InlineCall - -logger = logging.getLogger(__name__) - -@loader.tds -class Aeconv(loader.Module): - """Easy and fast valute converter""" - - bot = "@exchange_rates_vsk_bot" - strings = { - "name": "Aeconv", - "wait": "💵 Converting...", - "no_args": "🖕 Where are the arguments?", - "unsupported": "🚫 Unsupported currency!", - "converted": "💸 Converted {}\n\n", - "already": "⚠️ Wait until the bot responds!", - "wrong_currency": "🤷‍♀️ Wrong currency", - "choose_currency": "📉 Choose currency", - "processing": "🕔 Processing...", - "done": "✅ Done!", - "already_in_conv": "⚠️ Already in conversation!", - } - - strings_ru = { - "wait": "💵 Конвертирую...", - "no_args": "🖕 Где аргументы?", - "unsupported": "🚫 Валюта не поддерживается!", - "converted": "💸 Сконвертирован {}\n\n", - "already": "⚠️ Подожди пока бот ответит!", - "wrong_currency": "🤷‍♀️ Неправильная валюта", - "choose_currency": "📉 Выберите валюту", - "processing": "🕔 Обрабатываю...", - "done": "[Aeconv] Готово!", - "already_in_conv": "⚠️ Жди пока закончится процесс!", - } - - strings_uz = { - "wait": "💵 Valyuta konvertatsiyasi...", - "no_args": "🖕 Argumetlar qayerda?", - "unsupported": "🚫 Valyuta qo'llab-quvvatlanmaydi!", - "converted": "💸 Konvertatsiya qilindi {}\n\n", - "already": "⚠️ Bot javob berishini kuting!", - "wrong_currency": "🤷‍♀️ Noto'g'ri valyuta", - "choose_currency": "📉 Valyutani tanlang", - "processing": "🕔 Qayta ishlayapman...", - "done": "[Aeconv]Tayyor!", - "already_in_conv": "⚠️ Protsess tugaguncha kuting!", - } - - strings_de = { # i'm really sorry for translations, i'm not good at it - "wait": "💵 Konvertiere...", - "no_args": "🖕 Wo sind die Argumente?", - "unsupported": "🚫 Nicht unterstützte Währung!", - "converted": "💸 Konvertiert {}\n\n", - "already": "⚠️ Warten Sie, bis der Bot antwortet!", - "wrong_currency": "🤷‍♀️ Falsche Währung", - "choose_currency": "📉 Währung auswählen", - "processing": "🕔 Verarbeitung...", - "done": "[Aeconv]Fertig!", - "already_in_conv": "⚠️ Warten Sie, bis der Prozess beendet ist!", - - } - - strings_tr = { # i'm really sorry for translations, i'm not good at it - "wait": "💵 Dönüştürülüyor...", - "no_args": "🖕 Argümanlar nerede?", - "unsupported": "🚫 Desteklenmeyen para birimi!", - "converted": "💸 Dönüştürüldü {}\n\n", - "already": "⚠️ Bot cevap verene kadar bekleyin!", - "wrong_currency": "🤷‍♀️ Yanlış para birimi", - "choose_currency": "📉 Para birimini seçin", - "processing": "🕔 İşleniyor...", - "done": "[Aeconv]Tamam!", - "already_in_conv": "⚠️ İşlem bitene kadar bekleyin!", - } - - strings_kk = { # i'm really sorry for translations, i'm not good at it - "wait": "💵 Валюта айырбасталуда...", - "no_args": "🖕 Аргументтер қайда?", - "unsupported": "🚫 Валюта қолдау көрсетілмейді!", - "converted": "💸 Айырбасталды {}\n\n", - "already": "⚠️ Бот жауап бергенге дейін күтіңіз!", - "wrong_currency": "🤷‍♀️ Дұрыс валюта емес", - "choose_currency": "📉 Валютаны таңдаңыз", - "processing": "🕔 Қайта өңдеу...", - "done": "[Aeconv]Тайық!", - "already_in_conv": "⚠️ Процесс аяқталғанда дейін күтіңіз!", - } - - custom_emojis = { - "🇬🇧": "🇬🇧", - "🇺🇿": "🇺🇿", - "🇺🇸": "🇺🇸", - "🇷🇺": "🇷🇺", - "🇰🇿": "🇰🇿", - "🇪🇺": "🇪🇺", - "🇺🇦": "🇺🇦", - "🇹🇷": "🇹🇷", - "🇵🇱": "🇵🇱", - "🇰🇬": "🇰🇬", - "bit": "💰", - "eth": "🔹", - "ton": "💰" - } - - currency_mapping = { - "EU": ("🇪🇺", "EUR"), - "GB": ("🇬🇧", "GBP"), - "UZ": ("🇺🇿", "UZS"), - "US": ("🇺🇸", "USD"), - "RU": ("🇷🇺", "RUB"), - "KZ": ("🇰🇿", "KZT"), - "UA": ("🇺🇦", "UAH"), - "PL": ("🇵🇱", "PLN"), - "TR": ("🇹🇷", "TRY"), - "KG": ("🇰🇬", "KGS") - } - - currencies = [ - "EUR", "GBP", "UZS", "USD", "RUB", "KZT", "UAH", "PLN", "TRY", "KGS", "TON", "ETH", "BTC" - ] - - currency_flags = { - "EUR": "🇪🇺", - "GBP": "🇬🇧", - "UZS": "🇺🇿", - "USD": "🇺🇸", - "RUB": "🇷🇺", - "KZT": "🇰🇿", - "UAH": "🇺🇦", - "PLN": "🇵🇱", - "TRY": "🇹🇷", - "KGS": "🇰🇬" - } - - letters_stashing = { - "E": "cur_df", - "G": "cur_gh", - "P": "cur_nq", - "R": "cur_rs", - "S": "cur_rs", - "T": "cur_tu", - "U": "cur_tu", - } - - def currencies_markup(self, argument: str = "") -> list: - return utils.chunks( - [ - { - "text": f"{self.currency_flags[cur]} {cur}", - "callback": self.callback_4_currency, - "args": (cur,), - } - for cur in [ - i - for i in self.currency_flags.keys() - if i.startswith(argument.upper()) - ] - if cur.startswith(argument.upper()) - ], - 5, - ) - - async def client_ready(self, client, db): - await utils.dnd(client, self.bot, archive=True) - - async def get_ton_in_rub(self, am, what: str = "uzs", cup: bool = False) -> str: - r = ( - get(f"https://coinchefs.com/{what}/ton/{am}/") - if cup - else get(f"https://coinchefs.com/ton/{what}/{am}/") - ) - soup = bs(r.text, "html.parser") - if result_div := soup.find('div', class_='convert-result'): - if result_text_div := result_div.find( - 'div', class_='col-xs-10 col-sm-10 text-center result-text' - ): - if value_element := result_text_div.b: - return value_element.get_text(strip=True) - else: - logger.debug("Value element not found") - else: - logger.debug("Result text div not found") - else: - logger.debug("Result div not found") - return None - - async def callback_4_currency(self, call: InlineCall, currency: str): - try: - first_letter = currency[0] - await call.answer(self.strings["processing"], show_alert=True) - await call.delete() - async with self.client.conversation(self.bot) as conv: - m = await conv.send_message("/settings") - r = await conv.get_response() - await r.click(data=b'cur_menu') - await r.click(data=b'cur_curmenu') - await r.click(data=self.letters_stashing[first_letter]) - await r.click(data=f"cur_{currency.upper()}") - await r.delete() - await m.delete() - await self.inline.bot.send_message(self.tg_id, self.strings["done"]) - except AlreadyInConversationError: - await call.answer(self.strings["already_in_conv"], show_alert=True) - - @loader.command(ru_doc="<количество> [валюта] должны быть разделены пробелом") - async def conv(self, message: Message): - """ [currency] should be separated by space""" - args = utils.get_args_raw(message) - if not args: - await utils.answer(message, self.strings["no_args"]) - return - # if args.split(" ")[1].upper() not in self.currencies: - # await utils.answer(message, self.strings["wrong_currency"]) - # return - await utils.answer(message, self.strings["wait"]) - if "ton".lower() in args.lower(): - li_args = args.split(" ") - ex_ = await self.get_ton_in_rub(li_args[0]) - try: - async with message.client.conversation(self.bot) as conv: - msg = await conv.send_message(args) if "ton".lower() not in args.lower() else await conv.send_message(ex_) - r = await conv.get_response() - res = r.text - text_ = "" - text_ += ( - self.strings["converted"].format(args) - if "ton".lower() not in args.lower() - else self.strings["converted"].format(f"{li_args[0]} TON") - ) - for emoji, currency, *_ in self.currency_mapping.values(): - if match := re.findall(f"{emoji} ?(.*) {currency}", res): - text_ += ( - f"{self.custom_emojis.get(emoji)} {currency}: " - f"{match[0]}\n" - ) - - if match := re.findall(r"(.*) BTC", res): - text_ += f"\n{self.custom_emojis['bit']} BTC: {match[0]}\n" - if match := re.findall(r"(.*) ETH", res): - text_ += f"{self.custom_emojis['eth']} ETH: {match[0]}\n" - - if ex_ := await self.get_ton_in_rub(args.split(" ")[0], args.split(" ")[1].lower(), True): - text_ += f"{self.custom_emojis['ton']} TON: {ex_.split(' = ')[1]}\n" - await utils.answer(message, text_) - await msg.delete() - await r.delete() - except AlreadyInConversationError: - await utils.answer(message, self.strings["already"]) - except TimeoutError: - await utils.answer(message, self.strings["unsupported"]) - except IndexError: - await utils.answer(message, self.strings["no_args"]) - - - @loader.command(ru_doc="[валюта] | без аргументов покажет список валют для включения/выключения") - async def controlvalute(self, message: Message): - """[currency] | without arguments will show list of currencies for enable/disable""" - if args := utils.get_args_raw(message): - await utils.answer(message, self.strings["choose_currency"], reply_markup=self.currencies_markup(args)) - else: - return await utils.answer(message, self.strings["choose_currency"], reply_markup=self.currencies_markup()) - - - \ No newline at end of file diff --git a/AmoreForever/amoremods/alarm.py b/AmoreForever/amoremods/alarm.py deleted file mode 100644 index e4157c7..0000000 --- a/AmoreForever/amoremods/alarm.py +++ /dev/null @@ -1,225 +0,0 @@ -# █ █ █ █▄▀ ▄▀█ █▀▄▀█ █▀█ █▀█ █ █ -# █▀█ █ █ █ █▀█ █ ▀ █ █▄█ █▀▄ █▄█ - -# 🔒 Licensed under the GNU GPLv3 -# 🌐 https://www.gnu.org/licenses/agpl-3.0.html -# 👤 https://t.me/hikamoru - - -# meta developer: @hikamorumods -# meta banner: https://raw.githubusercontent.com/AmoreForever/assets/master/Alarm.jpg - -import re -import pytz -import random -import logging -import asyncio -from datetime import datetime - -from .. import utils, loader - -logger = logging.getLogger(__name__) - -day_to_weekday = { - "mon": 0, - "tue": 1, - "wed": 2, - "thu": 3, - "fri": 4, - "sat": 5, - "sun": 6, - "пн": 0, - "вт": 1, - "ср": 2, - "чт": 3, - "пт": 4, - "сб": 5, - "вс": 6, -} - - -@loader.tds -class AlarmMod(loader.Module): - """Alarm module for remind you about something""" - - strings = { - "name": "Alarm", - "set": " Alarm set for {}!", - "unset": " Alarm for {} unset!", - "unset_all": " All alarms unset!", - "list_item": ( - " Alarm for {}! #{}" - "\n🕔 Time: {}" - "\n🔊 Message: {}" - ), - "no_alarms": "🙅‍♂️ No alarms!", - "off_button": "✋ Off", - "notification": "⏰ Alarm!\n\n{}", - "turned_off": "✔️ Alarm turned off!", - "incorrect_time": "🖕 Incorrect time!", - "where_args": "🖕 Where arguments?", - "incorrect_args": "🖕 Incorrect arguments! Write like this: .setalarm mon 12:00 text", - "interval_doc": "Interval of sending notifications in seconds", - "time_zone_doc": "Time zone for alarms (for example, Europe/Moscow)", - } - strings_ru = { - "set": " Напоминание установлено на {}!", - "unset": " Напоминание для {} отменено!", - "unset_all": " Все напоминания отменены!", - "list_item": ( - " Напоминание для {}! #{}" - "\n🕔 Время: {}" - "\n🔊 Сообщение: {}" - ), - "no_alarms": "🙅‍♂️ Нет напоминаний!", - "off_button": "✋ Выключить", - "notification": "⏰ Напоминание!\n\n{}", - "turned_off": "✔️ Напоминание выключено!", - "incorrect_time": "🖕 Неправильное время!", - "where_args": "🖕 Где аргументы?", - "incorrect_args": "🖕 Неправильные аргументы! Пиши так: .setalarm пн 12:00 текст", - "interval_doc": "Интервал отправления напоминаний в секундах", - "time_zone_doc": "Часовой пояс для напоминаний (например, Europe/Moscow)", - } - - def __init__(self): - self.config = loader.ModuleConfig( - loader.ConfigValue( - "interval", - 5, - lambda: self.strings("interval_doc"), - validator=loader.validators.Integer(minimum=1, maximum=60), - ), - loader.ConfigValue( - "time_zone", - "Europe/Moscow", - lambda: self.strings("time_zone_doc"), - validator=loader.validators.RegExp( - r"^[\w/]+$", - ) - ), - ) - @loader.command(ru_doc="<день недели> <время> <сообщение> - установить напоминание") - async def setalarm(self, message): - """