# * _ __ __ _ _
# * / \ _ _ _ __ ___ _ __ __ _| \/ | ___ __| |_ _| | ___ ___
# * / _ \| | | | '__/ _ \| '__/ _` | |\/| |/ _ \ / _` | | | | |/ _ \/ __|
# * / ___ \ |_| | | | (_) | | | (_| | | | | (_) | (_| | |_| | | __/\__ \
# * /_/ \_\__,_|_| \___/|_| \__,_|_| |_|\___/ \__,_|\__,_|_|\___||___/
# *
# * © 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"))