コード例 #1
0
 static void Main(string[] args)
 {
     if (!File.Exists("settings.json"))
     {
         File.Create("settings.json").Close();
     }
     settings = JsonConvert.DeserializeObject <SettingsJSON>(File.ReadAllText("settings.json"));
     new Program().MainAsync().GetAwaiter().GetResult();
 }
コード例 #2
0
        private async Task MessageReceivedAsync(SocketMessage message)
        {
            if (message.Author.Id == _client.CurrentUser.Id)
            {
                return;
            }

            if (message.Channel is SocketDMChannel)
            {
                if (message.Content.Split(' ').Length == 2)
                {
                    settings = JsonConvert.DeserializeObject <SettingsJSON>(File.ReadAllText("settings.json"));
                    using (var request = new xNet.HttpRequest())
                    {
                        try
                        {
                            string[] data = message.Content.Split(' ');
                            request.UserAgent = Http.ChromeUserAgent();
                            request.Cookies   = new CookieDictionary();
                            request.AddHeader("XF-Api-Key", settings.xfToken);
                            var         response      = request.Post(settings.xfUri + "/api/auth", "login="******"&password="******"application/x-www-form-urlencoded").ToString();
                            XenforoJSON response_data = JsonConvert.DeserializeObject <XenforoJSON>(response);

                            if (response.Contains("success") && response_data != null && response_data.success != null && response_data.User != null)
                            {
                                int max_group = response_data.User.user_group_id;
                                foreach (int group in (int[])response_data.User.secondary_group_ids)
                                {
                                    int place = Array.IndexOf(settings.groupsHierarchy, group);
                                    max_group = max_group > place ? max_group : place;
                                }
                                var        user = message.Author as SocketGuildUser;
                                SocketRole role = user.Guild.GetRole(settings.groups[max_group].dsRoleId);
                                // TODO: можете также работать с данными полученного класса, например, для выдачи роли стаффа или добавления в какую-нибудь рассылку
                                await user.AddRoleAsync(role);

                                await message.Author.SendMessageAsync("Успешно");
                            }
                            else
                            {
                                await message.Author.SendMessageAsync("Неверный логин и/или пароль");
                            }
                        }
                        catch (Exception ex)
                        {
                            await message.Author.SendMessageAsync("Во время авторизации возникла ошибка: " + ex.Message);
                        }
                    }
                }
            }
            else
            if (message.Content == "!auth")
            {
                await message.Author.SendMessageAsync("Для авторизации в системе и получения соответствущей вам роли, отправьте в текущий диалог свой логин и пароль от форума MYPASTE.COM в формате log{пробел}pass");
            }
        }