Browse Source

reg with bot

master
gsd 2 weeks ago
parent
commit
34b1b8d09f
  1. 9
      bot.py
  2. 55
      other_ext/register.py

9
bot.py

@ -131,6 +131,15 @@ class DiscordClient(commands.Bot):
traceback.print_exc()
return await interaction.followup.send("Возникла необратимая ошибка, хз что случилось. Попробуй еще раз!", ephemeral=True)
async def ValidateUuidOnRegister(self, uuid):
async with aiohttp.ClientSession(cookies={"secretkey":self.secret_key}) as session:
async with session.get(f"{self.backend_url}/api/discord/validate?uuid={uuid}", ssl=False) as response:
steamIdContainer = await response.json()
if steamIdContainer is None:
return None
else:
return steamIdContainer["steam64"]
async def GetSteam64OfDiscord(self, user, no_cache = False):
if user.id in self.discord2steam_cache and not no_cache:
return self.discord2steam_cache[user.id]

55
other_ext/register.py

@ -5,22 +5,25 @@ import os
import asyncio, aiohttp
import traceback
from typing import List
import uuid
class Extension:
auth_channel = 960796520247091201
default_role = 684828780040421388
core = None
temporaryReg = {}
def __init__(self, core):
if not os.getenv("REGISTER_ENABLED", None): return None
self.core = core
@core.tree.command(name = "register", description = "Привязать дискорд к стиму")
@discord.app_commands.describe(profile=core.ANY_INPUT)
async def register(
interaction: discord.Interaction,
profile: str
interaction: discord.Interaction
):
await interaction.response.defer(thinking=True, ephemeral=True)
return await interaction.followup.send(f'Для этого перейди сюда и проделай что нужно https://tf2.pblr-nyk.pro/authentication_discord.html\nЗатем перезайди на сервер дискорда', ephemeral=True)
#return await interaction.followup.send(f'Для этого перейди сюда и проделай что нужно https://tf2.pblr-nyk.pro/authentication_discord.html\nЗатем перезайди на сервер дискорда', ephemeral=True)
try:
steam64 = await core.GetSteam64OfDiscord(interaction.user, True)
@ -28,31 +31,23 @@ class Extension:
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)
if not profile.played_on_servers:
return await interaction.followup.send('Профиль который ты хочешь привязать не играл на наших серверах, тогда зачем ты здесь??', 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, interaction.guild)
return await interaction.followup.send(f'Ты крут!', ephemeral=True)
if not interaction.user.id in self.temporaryReg:
self.temporaryReg[interaction.user.id] = str(uuid.uuid4())
return await interaction.followup.send(f'Для подтверждения профиля, зайди на любой из серверов фактов и напиши в чат: {self.temporaryReg[interaction.user.id]}\nЗатем повтори эту команду и бот узнает твой индификатор стим из чата', ephemeral=True)
else:
result = await core.ValidateUuidOnRegister(self.temporaryReg[interaction.user.id])
if result:
player = await core.GetPlayer(result, result, False)
regResult = await player.CreateDiscordId(interaction.user.id)
if regResult:
await self.final_stage(interaction.user, interaction.guild, 'Зарегистрировался через бота')
del self.temporaryReg[interaction.user.id]
return await interaction.followup.send(f'Бот успешно привязал твой профиль: {player.community_url}', ephemeral=True)
else:
del self.temporaryReg[interaction.user.id]
return await interaction.followup.send(f'Ошибка регистрации, напиши админам', ephemeral=True)
else:
return await interaction.followup.send(f'Бот не увидел твоего сообщения в чате за последние 5 минут, которое состояло из {self.temporaryReg[interaction.user.id]}.\nПросто скопируй {self.temporaryReg[interaction.user.id]} и вставь в чат в игре, затем повтори у бота эту команду.', ephemeral=True)
@core.tree.command(name = "unregister", description = "Отвязать профиль")
@discord.app_commands.describe()
@ -83,7 +78,9 @@ class Extension:
auth_channel: discord.TextChannel = await core.fetch_channel(self.auth_channel)
welcome_message = f"Привет <@{member.id}>!!!\n" + """
Добро пожаловать на оффициальный сервер дискорда факты 13!
Чтоб войти и получить роль для доступа ко всему, авторизуйся через форму на сайте: https://tf2.pblr-nyk.pro/authentication_discord.html
Чтоб войти и получить роль для доступа ко всему, авторизуйся!
Либо через бота в личке, через команду: /register
Либо через через форму на сайте, через "дискорд" -> "привязать аккаунт": https://tf2.pblr-nyk.pro/authentication_discord.html
Если все правильно, то этот канал для тебя исчезнет и ты получишь доступ ко всем остальным каналам.
> Так-же ты можешь прочитать местные правила <#734497550232453340> Если ты их видишь))

Loading…
Cancel
Save