示例#1
0
        public static void EdulinkSentRequest(object sender, JsonRpcEventArgs e)
        {
            Edulink client = (Edulink)sender;

            Program.LogMsg($"{Edulink.Url}{e.Method}", LogSeverity.Info, $"{e.Username}/Edulink");
        }
示例#2
0
        public async Task OneTime(string username)
        {
            if (username.Length != "cheale14".Length && username.EndsWith("14") == false)
            {
                await ReplyAsync("Error: username inconsistent with proper naming schemes");

                return;
            }
            EmbedBuilder builder = new EmbedBuilder()
            {
                Title       = "Check tutorial",
                Description = $"Please check the linked tutorial to get better detailed information.",
                Url         = "https://masterlist.uk.ms/wiki/index.php/Bot:EduLink_OTP"
            };

            await ReplyAsync(embed : builder.Build());

            TimeSpan duration = TimeSpan.FromMinutes(15);

            await ReplyAsync($"Please provide your authentication token in your next message\nYou have {duration.TotalMinutes} minutes");

            var reply = await NextMessageAsync(timeout : TimeSpan.FromSeconds(duration.TotalSeconds));

            if (string.IsNullOrWhiteSpace(reply?.Content))
            {
                await ReplyAsync("Command timed out.");

                return;
            }
            var authToken = reply.Content;

            await ReplyAsync("Please provide your learner Id");

            reply = await NextMessageAsync(timeout : TimeSpan.FromSeconds(duration.TotalSeconds));

            if (string.IsNullOrWhiteSpace(reply?.Content))
            {
                await ReplyAsync("Command timed out.");

                return;
            }

            if (int.TryParse(reply.Content, out var id))
            {
                var edulink = new Edulink(username, id, authToken);
                try
                {
                    var timetable = edulink.GetTimetable();
                    var week      = timetable.Weeks.OrderByDescending(x => x.Days.Count).First();
                    foreach (var day in week.Days)
                    {
                        foreach (var lesson in day.Lessons)
                        {
                            var className = lesson?.Class?.Name;
                            if (string.IsNullOrWhiteSpace(className))
                            {
                                continue;
                            }
                            if (!SelfBotUser.ManualClasses.Contains(className))
                            {
                                SelfBotUser.ManualClasses.Add(className);
                            }
                        }
                    }
                    Program.Save();
                    string ss = "Known classes:";
                    foreach (var c in SelfBotUser.ManualClasses)
                    {
                        ss += $"\n- {c}";
                    }
                    await ReplyAsync(ss);
                } catch (Exception ex)
                {
                    await ReplyAsync("**Error**\n" + ex.Message);

                    Program.LogMsg("EdulinkManualClasses", ex);
                }
            }
            else
            {
                await ReplyAsync("Error: learner id must be an integer.");
            }
        }