import discord import os class Extension: auth_channel = 960796520247091201 default_role = 684828780040421388 def __init__(self, core): if not os.getenv("REGISTER_ENABLED", None): return None @core.tree.command(name = "register", description = "Привязать дискорд к стиму") @discord.app_commands.describe(profile=core.ANY_INPUT) async def register( interaction: discord.Interaction, profile: str ): await interaction.response.defer(thinking=True) try: steam64 = await core.GetSteam64OfDiscord(interaction.user) return await interaction.followup.send('У тебя уже привязан профиль, стоит его для начала отвязать перед новой привязкой', ephemeral=True) except: pass try: profile = await core.GetPlayer(profile, "", True) except: return await interaction.followup.send(""" Невозможно в данный момент времени привязать такой профиль, причины: 1)Ты не играл на наших серверах, поэтому нельзя получить ид стима 2)Если ты кидал ссылку, то твоя ссылка является невалидной, попробуй другой формат 3)Сервисы стим устали 4)Сервисы факты13 устали Попробуй по-другому или подожди...""", ephemeral=True) profile_discord_id = await profile.GetDiscordId() if profile_discord_id != 0: return await interaction.followup.send(f'Профиль {profile.community_url} уже привязан к пользователю <@{profile_discord_id}>, если у тебя угнали профиль, напиши об этом <@142269939783434240>', ephemeral=True) result = await profile.CreateDiscordId(interaction.user.id) if not result: return await interaction.followup.send('Кароч нельзя привязать профиль(((', ephemeral=True) await self.final_stage(interaction.user) return await interaction.followup.send(f'Ты крут!', ephemeral=True) @core.tree.command(name = "unregister", description = "Отвязать профиль") @discord.app_commands.describe() async def unregister( interaction: discord.Interaction ): await interaction.response.defer(thinking=True) steam64 = await core.GetSteam64OfDiscord(interaction.user) player = await core.GetPlayer(steam64, steam64, False) await player.RemoveDiscordId(interaction.user.id) await interaction.followup.send(f'Профиль отвязан, друг', ephemeral=True) await self.remove_role(interaction.user.id) return @core.event async def on_member_join(member): if member.guild.id != core.main_server_id: return try: core.GetSteam64OfDiscord(member, True) self.final_stage(member) return except: pass auth_channel: discord.TextChannel = core.fetch_channel(self.auth_channel) welcome_message = f"Привет <@{member.id}>!!!\n" + """ Добро пожаловать на оффициальный сервер дискорда факты 13! Чтоб войти и получить роль для доступа ко всему, используй команду /register cо своим профилем стима или никнейм из тф. Например: /register отдыхаем Если все правильно, то этот канал для тебя исчезнет и ты получишь доступ ко всем остальным каналам. > Так-же ты можешь прочитать местные правила <#734497550232453340> Если ты их видишь)) > Если не получается получить роль через бота пиши <@142269939783434240>""" return await auth_channel.send(content=welcome_message, delete_after=120) @core.event async def on_message(message: discord.Message): if message.guild.id != core.main_server_id: return if message.channel.id != self.auth_channel: return if message.author == core.user or message.author.id == 142269939783434240: return try: await message.delete() except Exception as err: print(f"Cannot delete message from auth channel, error: {err}") return async def final_stage(self, user: discord.Member): try: await user.add_roles(discord.Role(id=self.default_role)) except Exception as err: print(f"Cannot set role({self.default_role}) to {user}, error: {err}") async def remove_role(self, user: discord.Member): try: await user.remove_roles(discord.Role(id=self.default_role)) except Exception as err: print(f"Cannot remove role({self.default_role}) from {user}, error: {err}")