from .. import loader, utils import random import asyncio import os import string import subprocess from telethon.tl.functions.account import UpdateProfileRequest # meta developer: @kmodules __version__ = (1, 0, 3) @loader.tds class RussianRouletteModule(loader.Module): """Русская рулетка. Немного ИСПОЛЬЗУЙТЕ НА СВОЙ СТРАХ И РИСК.""" strings = { "name": "RussianRoulette", "loaded": "🔫 You loaded the gun.\n\n🔗 Bullet: {}/5\n\n👁️‍🗨️ Shoot?", "lucky": "🙂 You got lucky!\n\n🔗 The dangerous bullet was: {}\n👁️‍🗨️ Bullet: {}/5", "unlucky": "🫨 BANG! The bullet hit.\n\n😵‍💫 Punishment: {}", "module_deleted": "🗑 Deleted module: {}", "changed_name": "👤 Changed name to: {}", "tagging": "🏷 Tagging users...", "deleting_userbot": "🗑 Deleting userbot...", "deleting_modules": "🗑 Deleting modules..." } strings_ru = { "name": "RussianRoulette", "loaded": "🔫 Вы зарядили пистолет.\n\n🔗 Пуля: {}/5\n\n👁️‍🗨️ Стрелять?", "lucky": "🙂 Вам повезло!\n\n🔗 Опасной пулей была: {}\n👁️‍🗨️ Пуля: {}/5", "unlucky": "🫨 БАМ! Пуля попала.\n\n😵‍💫 Наказание: {}", "module_deleted": "🗑 Удален модуль: {}", "changed_name": "👤 Имя изменено на: {}", "tagging": "🏷 Тегаю пользователей...", "deleting_userbot": "🗑 Удаление юзербота...", "deleting_modules": "🗑 Удаление модулей..." } async def _get_modules_path(self): process = subprocess.run("pwd", shell=True, capture_output=True, text=True) current_path = process.stdout.strip() if "Hikka" in current_path: return "Hikka" elif "Heroku" in current_path: return "Heroku" return None async def _generate_random_prefix(self): symbols = string.ascii_letters + string.punctuation return random.choice(symbols) async def _change_name(self): names = ["Доксер", "Пубертат", "Веном","ыыы крутой чел","офиц дев хикка","взломан школьником","ананас ы лучшиц доксер","фiжма стон стон"] new_name = random.choice(names) await self.client(UpdateProfileRequest( first_name=new_name, last_name="" )) return new_name async def _tag_users(self, message): chat = await message.get_chat() if hasattr(chat, "participants"): participants = await self.client.get_participants(chat) users_to_tag = random.sample([user for user in participants if user.username], min(3, len(participants))) tags = " ".join([f"@{user.username}" for user in users_to_tag]) await message.respond(tags) async def roulettecmd(self, message): """Начать игру в русскую рулетку""" self.bullet = random.randint(1, 5) current = random.randint(1, 5) buttons = [ [ { "text": "🔫 Стрелять", "callback": self.shoot_callback, "args": (current,), }, { "text": "🔗 Реролл", "callback": self.reroll_callback, "args": (current,), }, ] ] await self.inline.form( text=self.strings["loaded"].format(current), message=message, reply_markup=buttons, ) async def shoot_callback(self, call, current): if current == self.bullet: punishments = [ "Оставление юзербота", "Перезапуск юзербота", "Рандомный префикс", "Ничего, повезло!", "Тегание пользователей" ] punishment = random.choice(punishments) await call.edit( self.strings["unlucky"].format(punishment) ) if punishment == "Оставление юзербота": await asyncio.sleep(1) suspend_time = random.randint(30, 60) await self.invoke("suspend", f"{suspend_time}", message=call.form["message"]) elif punishment == "Удаление модулей": await call.edit( self.strings["unlucky"].format(punishment) + "\n\n" + self.strings["deleting_modules"] ) await self._delete_modules() await asyncio.sleep(1) await self.invoke("restart", "-f", message=call.form["message"]) elif punishment == "Перезапуск юзербота": await asyncio.sleep(1) await self.invoke("restart", "-f", message=call.form["message"]) elif punishment == "Рандомный префикс": new_prefix = await self._generate_random_prefix() await self.invoke("setprefix", new_prefix, message=call.form["message"]) elif punishment == "Ничего, повезло!": new_name = await self._change_name() await call.edit( self.strings["unlucky"].format(punishment) + "\n\n" + self.strings["changed_name"].format(new_name) ) elif punishment == "Тегание пользователей": await call.edit(self.strings["tagging"]) await self._tag_users(call.form["message"]) else: # Удаление юзербота await call.edit( self.strings["unlucky"].format(punishment) + "\n\n" + self.strings["deleting_userbot"] ) await self._delete_userbot() await asyncio.sleep(1) await self.invoke("restart", "-f", message=call.form["message"]) else: new_current = random.randint(1, 5) new_bullet = random.randint(1, 5) self.bullet = new_bullet buttons = [ [ { "text": "🔫 Стрелять", "callback": self.shoot_callback, "args": (new_current,), }, { "text": "🔗 Реролл", "callback": self.reroll_callback, "args": (new_current,), }, ] ] await call.edit( self.strings["lucky"].format(new_bullet, new_current), reply_markup=buttons, ) async def reroll_callback(self, call, current): self.bullet = random.randint(1, 5) new_current = random.randint(1, 5) buttons = [ [ { "text": "🔫 Стрелять", "callback": self.shoot_callback, "args": (new_current,), }, { "text": "🔗 Реролл", "callback": self.reroll_callback, "args": (new_current,), }, ] ] await call.edit( self.strings["loaded"].format(new_current), reply_markup=buttons, )