Esempio n. 1
0
        public async Task CreateAfk(AfkObject data)
        {
            Fields field = new Fields();

            field.AddField("id", data.Id);
            field.AddField("isAfk", data.IsAfk);
            field.AddField("message", data.Message);

            await Base.CreateRecord(table, field);
        }
Esempio n. 2
0
        public async Task UpdateAfk(AfkObject data)
        {
            Fields field = new Fields();

            field.AddField("isAfk", data.IsAfk);
            field.AddField("message", data.Message);

            var result = await Base.UpdateRecord(table, field, data.RecordId);

            Console.WriteLine($"Update AFK Result: {result.Success}");
            Console.WriteLine($"Error: {result.AirtableApiError}");
        }
        private async Task TurnOffAfk(SocketCommandContext Context, AfkObject afk)
        {
            var user     = Context.User as SocketGuildUser;
            var username = user.Nickname == null ? user.Username : user.Nickname;
            await user.ModifyAsync(x =>
            {
                x.Nickname = username.Replace("[♡]", "");
            });

            afk.IsAfk   = false;
            afk.Message = "";
            await AfkDb.UpdateAfk(afk);

            await Context.Channel.SendMessageAsync("I have removed your AFK status.");
        }
Esempio n. 4
0
        public async Task <AfkObject> GetAfk(ulong id)
        {
            AfkObject afk = new AfkObject();

            var records = await Base.ListRecords(table, filterByFormula : "{id} = " + id);

            foreach (var record in records.Records)
            {
                afk.Id       = id;
                afk.IsAfk    = Convert.ToBoolean(record.GetField("isAfk"));
                afk.Message  = Convert.ToString(record.GetField("message"));
                afk.RecordId = record.Id;
            }

            return(afk);
        }
Esempio n. 5
0
        public async Task AfkCommand([Remainder] string message = "AFK")
        {
            bool check = await Db.CheckIfRecordExist(Context.User.Id);

            if (!check)
            {
                await Db.CreateAfk(new AfkObject
                {
                    Id      = Context.User.Id,
                    IsAfk   = true,
                    Message = message
                });
            }
            else
            {
                AfkObject afk = await Db.GetAfk(Context.User.Id);

                await Db.UpdateAfk(new AfkObject
                {
                    Id       = Context.User.Id,
                    IsAfk    = true,
                    Message  = message,
                    RecordId = afk.RecordId
                });
            }
            var    user     = Context.User as SocketGuildUser;
            string username = "";

            if (user.Nickname == null)
            {
                username = user.Username;
            }
            else
            {
                username = user.Nickname;
            }
            await user.ModifyAsync(x =>
            {
                x.Nickname = $"[♡] {username}";
            });

            await Context.Channel.SendMessageAsync($"<a:FLLotusChonkyBellyPats:707464562013896705> I set your afk status to: \"{message}\". Also I'm a very chonku so please giv cuddles<:FLChonkyLotuGibCuddle:711385587139084409>");
        }
        private async Task Message_Event(SocketMessage MessageParam)
        {
            var Message = MessageParam as SocketUserMessage;
            var Context = new SocketCommandContext(_Client, Message);

            if (Context.Message == null || Context.Message.Content == "")
            {
                return;
            }
            if (Context.User.IsBot)
            {
                return;
            }
            var mentions = Context.Message.MentionedUsers;

            if (mentions.Count != 0)
            {
                foreach (var user in mentions)
                {
                    bool check = await AfkDb.CheckIfRecordExist(user.Id);

                    if (check)
                    {
                        AfkObject afk = await AfkDb.GetAfk(user.Id);

                        if (afk.IsAfk)
                        {
                            await AfkMessage(Context, afk);
                        }
                    }
                }
            }
            if (await AfkDb.CheckIfRecordExist(Context.User.Id))
            {
                AfkObject afk = await AfkDb.GetAfk(Context.User.Id);

                if (afk.IsAfk)
                {
                    await TurnOffAfk(Context, afk);
                }
            }
            int ArgsPos = 0;

            if (!(Message.HasStringPrefix(Config.Bot.Prefix, ref ArgsPos) || Message.HasMentionPrefix(_Client.CurrentUser, ref ArgsPos)))
            {
                return;
            }

            var Result = await _Commands.ExecuteAsync(Context, ArgsPos, _Service);

            if (!Result.IsSuccess && Result.Error != CommandError.UnknownCommand)
            {
                Console.WriteLine($"{DateTime.Now} at Command: {_Commands.Search(Context, ArgsPos).Commands[0].Command.Name} in {_Commands.Search(Context, ArgsPos).Commands[0].Command.Module.Name}] {Result.ErrorReason}");
                var embed = new EmbedBuilder();

                embed.WithTitle("***ERROR***");
                embed.WithColor(Color.Red);
                if (Result.Error == CommandError.BadArgCount)
                {
                    embed.WithDescription($"Missing Arguments\nThis commands needs the following arguments:\n{string.Join(", ", _Commands.Search(Context, ArgsPos).Commands[0].Command.Parameters.Select(p => p.Name))}");
                }
                else
                {
                    embed.WithDescription(Result.ErrorReason);
                }

                await Context.Channel.SendMessageAsync("", embed : embed.Build());
            }
        }
 private async Task AfkMessage(SocketCommandContext Context, AfkObject afk)
 {
     await Context.Channel.SendMessageAsync($"{Context.Guild.GetUser(afk.Id).Username} is afk: {afk.Message}");
 }