# * _ __ __ _ _ # * / \ _ _ _ __ ___ _ __ __ _| \/ | ___ __| |_ _| | ___ ___ # * / _ \| | | | '__/ _ \| '__/ _` | |\/| |/ _ \ / _` | | | | |/ _ \/ __| # * / ___ \ |_| | | | (_) | | | (_| | | | | (_) | (_| | |_| | | __/\__ \ # * /_/ \_\__,_|_| \___/|_| \__,_|_| |_|\___/ \__,_|\__,_|_|\___||___/ # * # * © Copyright 2024 # * # * https://t.me/AuroraModules # * # * 🔒 Code is licensed under GNU AGPLv3 # * 🌐 https://www.gnu.org/licenses/agpl-3.0.html # * ⛔️ You CANNOT edit this file without direct permission from the author. # * ⛔️ You CANNOT distribute this file if you have modified it without the direct permission of the author. # Name: Randomizer # Author: dend1yya | Felix? # Commands: # .cube | .monetka | .rnum # scope: hikka_only # meta developer: @AuroraModules # meta pic: https://i.postimg.cc/Hx3Zm8rB/logo.png # meta banner: https://te.legra.ph/file/201288f407537011ce0ed.jpg __version__ = (1, 1, 1) import random import asyncio from telethon.tl.types import Message # type: ignore from .. import loader, utils @loader.tds class RandomizerMod(loader.Module): """Module for playing with dice, heads/tails and other games.""" strings = { "name": "Randomizer", "invalid_number": "🚫 Invalid number! Please choose a number between 1 and 6.", "rolled": "🎲 Rolled the cube, got: {}", "win": "🎉 Congratulations! You guessed it right!", "lose": "😞 Sorry, you didn't guess it right. Try again!", "invalid_monetka": "🚫 Invalid choice! Please choose 'Heads' or 'Tails'.", "flipping": "🔄 Flipping the coin...", "flipped": "🪙 Coin flipped, it's: {}", "cfg_Number_Min": "Minimum number to be drawn", "cfg_Number_Max": "Maximum number rolled", "rnumber": "🦋 The number dropped", "error_min": " Error: Value is less than the minimum number from the configuration.", "error_max": " Error: Value is greater than the maximum number from the configuration.", "invalid_rnumber": "🚫 The number is specified incorrectly or is not a number.", } strings_ru = { "invalid_number": "🚫Указано неверное число! Пожалуйста выберите число от 1 до 6.", "rolled": "🎲Подробсил кубик и получил: {}", "win": "🎉Поздравляем! Вы выйграли", "lose": "😞Вы проиграли, вы загадали неверное число. Попробуйте ещё раз!", "invalid_monetka": "🚫Неверный выбор! Пожалуйста выберите 'орёл' или 'решка'", "flipping": "🔄Подрбасываю монетку...", "flipped": "🪙Монетка подброшена, выпало: {}", "cfg_Number_Min": "Минимальное число в выпадении", "cfg_Number_Max": "Максимальное число в выпадении", "rnumber": "🦋 Выпало число", "error_min": " Error: Значение меньше минимального числа из конфигурации.", "error_max": " Error: Значение больше максимального числа из конфигурации.", "invalid_rnumber": "🚫 Число указано неправильно или не является им.", } strings_uz = { "invalid_number": "🚫Noto'g'ri raqam kiritildi! Iltimos, 1 dan 6 gacha bo'lgan bir raqam tanlang.", "rolled": "🎲Zar ni chiqarib oldi: {}", "win": "🎉Tabriklaymiz! Siz yutdingiz", "lose": "😞Siz yo'qotdingiz, siz noto'g'ri raqam o'yladiz. Qaytadan urinib ko'ring!", "invalid_monetka": "🚫Noto'g'ri tanlov! Iltimos, 'to'g' va 'yuqori' tanlang", "flipping": "🔄Yig'ishni zarba shaklida qilmoqda...", "flipped": "🪙Zarba qilindi, natija: {}", "cfg_Number_Min": "Chiqqan eng kichik raqam", "cfg_Number_Max": "Chiqqan eng katta raqam", "rnumber": "🦋 Chiqqan raqam", "error_min": " Error: Qiymat sozlamadan minimal sonidan kichik.", "error_max": " Error: Qiymat sozlamadan maksimal sonidan katta.", "invalid_rnumber": "🚫 Raqam noto'g'ri kiritilgan yoki u raqam emas.", } strings_de = { "invalid_number": "🚫Ungültige Zahl angegeben! Bitte wählen Sie eine Zahl zwischen 1 und 6.", "rolled": "🎲Der Würfel wurde geworfen und ergab: {}", "win": "🎉Herzlichen Glückwunsch! Sie haben gewonnen", "lose": "😞Sie haben verloren, Sie haben eine falsche Zahl erraten. Versuchen Sie es erneut!", "invalid_monetka": "🚫Falsche Auswahl! Bitte wählen Sie 'Kopf' oder 'Zahl'", "flipping": "🔄Die Münze wird geworfen...", "flipped": "🪙Die Münze wurde geworfen, das Ergebnis ist: {}", "cfg_Number_Min": "Mindestanzahl beim Wurf", "cfg_Number_Max": "Maximale Anzahl beim Wurf", "rnumber": "🦋 Die Zahl ist gefallen", "error_min": " Error: Wert ist kleiner als die minimale Zahl in der Konfiguration.", "error_max": " Error: Wert ist größer als die maximale Zahl in der Konfiguration.", "invalid_rnumber": "🚫 Die Zahl ist falsch angegeben oder keine Zahl.", } strings_es = { "invalid_number": "🚫¡Número invalido especificado! Por favor elige un número entre 1 y 6.", "rolled": "🎲El dado fue lanzado y obtuvo: {}", "win": "🎉¡Felicidades! Has ganado", "lose": "😞Has perdido, has adivinado un número incorrecto. ¡Inténtalo de nuevo!", "invalid_monetka": "🚫¡Selección no válida! Por favor elige 'cara' o 'cruz'", "flipping": "🔄Lanzando la moneda...", "flipped": "🪙La moneda ha sido lanzada, el resultado es: {}", "cfg_Number_Min": "Número mínimo en la caída", "cfg_Number_Max": "Número máximo en la caída", "rnumber": "🦋 El número ha caído", "error_min": " Error: El valor es menor que el número mínimo de la configuración.", "error_max": " Error: El valor es mayor que el número máximo de la configuración.", "invalid_rnumber": "🚫 El número está especificado incorrectamente o no es un número.", } def __init__(self): self.config = loader.ModuleConfig( loader.ConfigValue( "Number_Min", 0, lambda: self.strings["cfg_Number_Min"], validator=loader.validators.Integer(), ), loader.ConfigValue( "Number_Max", 10, lambda: self.strings["cfg_Number_Max"], validator=loader.validators.Integer(), ), ) @loader.command( ru_doc="[0-6] - Бросить кубик с числом", uz_doc="[0-6] - Son bilan zar tashlash", de_doc="[0-6] - Würfeln mit einer Zahl", es_doc="[0-6] - Tirar un dado con un número", ) async def cube(self, message: Message): """[0-6] - Roll a dice with a number""" args = utils.get_args_raw(message) try: guessed_number = int(args) except ValueError: await utils.answer(message, self.strings("invalid_number")) return if not (1 <= guessed_number <= 6): await utils.answer(message, self.strings("invalid_number")) return result = random.randint(1, 6) await utils.answer(message, self.strings("rolled").format(result)) await asyncio.sleep(2) if guessed_number == result: await utils.answer(message, self.strings("win")) else: await utils.answer(message, self.strings("lose")) @loader.command( ru_doc="[орёл/решка] - Подбрасывает монетку, и выдает случайный результат", uz_doc="[орёл/решка] - Chiqqan va tasodifiy natijani ko'rsatadi", de_doc="[орёл/решка] - Wirft eine Münze und gibt ein zufälliges Ergebnis aus", es_doc="[орёл/решка] - Voltea una moneda y da un resultado aleatorio", ) async def monetka(self, message: Message): """[орёл/решка] - Flips a coin and gives a random result""" args = utils.get_args_raw(message) if args not in ["орёл", "решка"]: await utils.answer(message, self.strings("invalid_monetka")) return animated_text = self.strings("flipping") animated_message = await utils.answer(message, animated_text) await asyncio.sleep(1) result = random.choice(["орёл", "решка"]) await animated_message.edit(self.strings("flipped").format(result)) await asyncio.sleep(2) if args == result: await utils.answer(message, self.strings("win")) else: await utils.answer(message, self.strings("lose")) @loader.command( ru_doc="[number] - Случайное число", uz_doc="[number] - Tasodifiy raqam", de_doc="[number] - Zufallszahl", es_doc="[number] - Número aleatorio", ) async def rnum(self, message: Message): """[number] - Random number""" args = utils.get_args_raw(message) min_number = min(self.config["Number_Min"], self.config["Number_Max"]) max_number = max(self.config["Number_Min"], self.config["Number_Max"]) try: number_guess = int(args) except ValueError: await utils.answer(message, self.strings("invalid_rnumber")) return if number_guess < min_number: await utils.answer(message, self.strings["error_min"]) return elif number_guess > max_number: await utils.answer(message, self.strings("error_max")) return Number = random.randint(min_number, max_number) result = Number await utils.answer(message, f"{self.strings('rnumber')}: {result}") if number_guess == result: await asyncio.sleep(1.3) await utils.answer(message, self.strings("win"))