Example #1
0
        public override async Task DoWork(AbbybotCommandArgs md)
        {
            ComponentBuilder builder = new();

            builder.WithButton("I'm a button!!!", "button!", ButtonStyle.Primary);
            await md.originalMessage.Channel.SendMessageAsync(text : "here's a button:", components : builder.Build());
        }
Example #2
0
        public override async Task <bool> Evaluate(AbbybotCommandArgs cea)
        {
            Multithreaded = true;
            var v = cea.Message.Contains("```lua");

            return(v ? await base.Evaluate(cea) : false);
        }
Example #3
0
        public override async Task DoWork(AbbybotCommandArgs a)
        {
            if (a.isMentioning)
            {
                return;
            }
            var        FavoriteCharacter = a.Replace(Command).Replace("--debugmode", "");
            var        ap  = FavoriteCharacter.Split(" ");
            BigInteger sum = 0;

            for (int i = 0; i < ap.Length; i++)
            {
                if (ap[i] == "+")
                {
                    BigInteger s = 0;
                    BigInteger o = 0;
                    try
                    {
                        s    = new BigInteger(ap[i - 1], 10);
                        sum += (s);
                    } catch { continue; }
                    try
                    {
                        o    = new BigInteger(ap[i + 1], 10);
                        sum += (o);
                    }
                    catch { continue; }
                }
            }
            await a.Send(sum);
        }
Example #4
0
        public override async Task DoWork(AbbybotCommandArgs message)
        {
            Script script = new Script(CoreModules.Preset_HardSandbox);   //no io/sys calls allowed

            script.Options.DebugPrint = async s => await message.Send(s); //when print is used send message

            var asx = message.originalMessage.Attachments;

            foreach (var a in asx)
            {
                if (!a.Filename.Contains(".lua"))
                {
                    continue;
                }
                string fileurl = "";
                try
                {
                    fileurl = await ImageDownloader.DownloadImage(a.Url);
                }
                catch
                {
                    await message.Send("I could tell it was a lua file but i couldn't quite get ahold of it... (download failed...)");
                }
                try
                {
                    var      lua = File.ReadAllText(fileurl);
                    DynValue d   = script.DoString(lua);
                }
                catch
                {
                    await message.Send("I could tell it was a lua file but i couldn't read it...");
                }
            }
        }
        public override async Task <string> toHelpString(AbbybotCommandArgs aca)
        {
            var Commands = await AbbySql.AbbysqlClient.FetchSQL("Select * from `abbybooru`.`commands` ORDER BY `RatingId` ASC, `Command` ASC  ;");

            if (Commands.Count <= 0)
            {
                return("I'm sorry master I'm so dizzy... I don't see any picture commands anymore...");
            }
            StringBuilder sb = new StringBuilder("\n**Gelbooru Commands: **\n");

            foreach (AbbyRow command in Commands)
            {
                int    rating = command["RatingId"] is int rI ? rI : -1;
                string cmd    = command["Command"] is string cmdi ? cmdi : "";
                bool   rate   = aca.channel is not SocketDMChannel;
                if (rate)
                {
                    if (!aca.user.Ratings.Contains((CommandRatings)rating))
                    {
                        continue;
                    }
                }
                sb.Append($"" +
                          $"[**%{cmd}**]");
            }
            return(sb.ToString());
        }
Example #6
0
        public virtual async Task DoWorkIncrementations(AbbybotCommandArgs aca)
        {
            bool inTimeOut = aca.user.inTimeOut;

            //sb.AppendLine($"in time out: {inTimeOut}");
            if (inTimeOut)
            {
                DateTime time   = aca.user.TimeOutEndDate;
                string   reason = aca.user.timeoutReason;
                var      tt     = TimeStringGenerator.MilistoTimeString((decimal)(time - DateTime.Now).TotalMilliseconds);

                await aca.Send($"You're in **timeout** for {tt}. You **{reason}** and I can't stand for that. Sorry.");

                return;
            }

            ulong guildId = 0, channelId = 0;

            if (aca.guild != null)
            {
                guildId   = aca.guild.Id;
                channelId = aca.channel.Id;
            }
            await aca.IncreasePassiveStat("CommandsSent");

            await LastTimeSql.SetTimeSql(aca.user.Id, guildId, "Command", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
        }
 public override async Task DoWork(AbbybotCommandArgs aca)
 {
     if (aca.guild != null)
     {
         await GuildSql.UpdateGuildName(aca.guild);
     }
 }
Example #8
0
        public override async Task DoWork(AbbybotCommandArgs aca)
        {
            ulong guildId = 0, channelId = 0;

            if (aca.guild != null)
            {
                guildId   = aca.guild.Id;
                channelId = aca.channel.Id;
            }
            foreach (var m in aca.mentionedUsers)
            {
                await aca.IncreasePassiveStat($"({m.Id})Mentions");
            }

            if (aca.IsChannelNSFW)
            {
                await aca.IncreasePassiveStat("nsfwMessages");
            }
            else
            {
                await aca.IncreasePassiveStat("sfwMessages");
            }

            await aca.IncreasePassiveStat(aca.IsChannelNSFW? "nsfwMessages" : "sfwMessages");

            foreach (var w in words)
            {
                if (aca.Message.ReplaceA("abbybot ", "").ToLower().Contains(w.word))
                {
                    await aca.IncreasePassiveStat(w.column);
                }
            }
        }
Example #9
0
        public override async Task DoWork(AbbybotCommandArgs a)
        {
            if (a.isMentioning)
            {
                return;
            }
            var FavoriteCharacter = a.Replace(Command).Replace("--debugmode", "");

            var o = await SaybadtaglistSql.GetbadtaglistTags();

            foreach (var oo in o)
            {
                FavoriteCharacter.Replace(oo, "");
            }

            FavoriteCharacter.Insert(0, "you have a givt from a secret sender!!!\n");
            var           mu = a.getMentionedDiscordGuildUsers();
            StringBuilder sb = new StringBuilder();

            foreach (var muz in mu)
            {
                await muz.SendMessageAsync(FavoriteCharacter.ToString());

                await Task.Delay(100);
            }
            sb.Append("Sent a dm to ");
            sb.AppendJoin(", ", mu);

            if (!(a.channel is SocketDMChannel))
            {
                await a.Delete();
            }
            await a.Send(sb);
        }
Example #10
0
        public static async Task <RestUserMessage> Send(this AbbybotCommandArgs arg, StringBuilder sb, EmbedBuilder eb)
        {
            string s = sb?.ToString();
            Embed  e = eb?.Build();

            return((eb != null || sb != null) ? await arg.channel.SendMessageAsync(s, false, eb.Build()) : null);
        }
Example #11
0
        public override async Task <bool> Evaluate(AbbybotCommandArgs aca)
        {
            var abbybots = await AbbybotSql.GetAbbybotIdAsync();

            bool e = false;

            foreach (var abbybot in abbybots)
            {
                if (aca.user.Id == abbybot)
                {
                    e = true;
                }
            }

            bool listenChannel   = false;
            var  abbybotchannels = await AbbybotSql.GetAbbybotChannelIdAsync();

            foreach (var abbybotchannel in abbybotchannels)
            {
                if (aca.channel.Id == abbybotchannel.channelId)
                {
                    listenChannel = true;
                }
            }

            return(e && listenChannel && await Eval(aca));
        }
Example #12
0
        public override async Task DoWork(AbbybotCommandArgs message)
        {
            azr = 0;
            UserData.RegisterType <AbbybotUser>();
            UserData.RegisterType <AbbybotGuild>();
            Script script = new(CoreModules.Preset_SoftSandbox);             //no io/sys calls allowed

            script.Options.DebugPrint = _ => { };
            var luadata = await LuaSql.GetLuaData(message.user.Id);

            foreach (var luaCo in luadata.LuaPieces)
            {
                await TryRunLua(message, script, luaCo);
            }

            script.Options.DebugPrint = async s =>
            {
                if (azr < 3)
                {
                    azr++;
                    //Console.WriteLine($"test {azr}");
                    await message.Send(s);                     //when print is used send message
                }
                else
                {
                    await Task.Delay(100);
                }
            };
            Abbybot.print($"user {message.user}, guild {message.guild}");
            DynValue user = UserData.Create(message.user);

            script.Globals.Set("user", user);

            if (message.guild != null)
            {
                DynValue guild = UserData.Create(message.guild);
                script.Globals.Set("guild", guild);
            }

            script.Globals["buildfc"] = (Func <string, string>)message.BuildAbbybooruTag;

            DynValue dada = script.DoString("say = print");

            var m = message.Message.Split("```");

            foreach (var item in m)
            {
                var lu = item.Split('\n');
                if (lu[0] != "lua")
                {
                    continue;
                }

                StringBuilder sb = new(item);
                sb.Remove(0, 4);

                await TryRunLua(message, script, sb.ToString(), async ww =>
                                await LuaSql.AddLuaData(message.user.Id, ww));
            }
        }
Example #13
0
        public override async Task DoWork(AbbybotCommandArgs a)
        {
            await a.originalMessage.DeleteAsync();

            await a.Send("Bye");

            await(a.originalMessage.Channel as IGuildChannel).Guild.LeaveAsync();
        }
Example #14
0
        public override async Task DoWork(AbbybotCommandArgs e)
        {
            var message = e.Replace(Command);
            var sb      = new StringBuilder();

            AbbybooruTagGenerator.FCBuilder(message, sb);
            await e.Send(sb);
        }
Example #15
0
        public override async Task DoWork(AbbybotCommandArgs a)
        {
            var mu = a.mentionedUsers;

            if (a.isMentioning)
            {
                await a.Send(mu[0].GetAvatarUrl().Replace("size=128", "size=1024"));
            }
        }
Example #16
0
        public static async Task Build(AbbybotCommandArgs aca, string fc)
        {
            EmbedBuilder eb = new EmbedBuilder();

            eb.Title       = "No image found... :(";
            eb.Description = $"I could not find a picture of {fc}";
            eb.Color       = Color.Blue;
            await aca.Send(eb);
        }
Example #17
0
        public override async Task DoWork(AbbybotCommandArgs a)
        {
            var tagss = a.Replace(Command);

            if (tagss.Length < 1)
            {
                await a.Send("You gotta tell me some tags too silly!!!");

                return;
            }

            var fc = a.user.FavoriteCharacter;

            tagss.Replace("&fc", $"{fc}*");

            var tags = tagss.ToString().Split(' ').ToList();

            var badtaglisttags = await UserBadTagListSql.GetbadtaglistTags(a.user.Id);

            foreach (var item in badtaglisttags)
            {
                tags.Add($"-{item}");
            }

            if (a.guild != null)
            {
                var ratings = a.user.Ratings;
                var sgc     = (ITextChannel)a.channel;
                if (sgc == null)
                {
                    return;
                }

                if (a.Contains("-testlewd"))
                {
                    await a.Send($"channel is nsfw? {a.IsChannelNSFW }, you are lewd? {a.user.IsLewd}, You have permissions? {a.user.HasRatings(CommandRatings.hot)}");
                }
                if (!a.IsChannelNSFW || !a.user.IsLewd || !a.user.HasRatings(CommandRatings.hot))
                {
                    tags.Add("rating:safe");
                }
            }
            EmbedBuilder eb = null;
            var          s  = (await a.GetPicture(tags.ToArray(), OnFail: async e => { await a.Send(e.ToString( )); }))[0];
            ImgData      im = new ();

            if (s.fileUrl != null)
            {
                im.Imageurl = s.fileUrl;
            }
            if (s.source != null)
            {
                im.source = s.source;
            }

            await a.Send($"{s.fileUrl}, *{im.source}*");
        }
Example #18
0
        public override async Task DoWork(AbbybotCommandArgs a)
        {
            var FavoriteCharacter = a.Replace(Command);


            if (a.user.isGuild && !a.user.admin)
            {
                await a.Send($"silly {a.user.Preferedname}, you're not an admin here!!!");
            }
            Abbybot.print("acadd called");
            if (FavoriteCharacter.Length < 1)
            {
                return;
            }
            a.BuildAbbybooruTag(FavoriteCharacter);

            string pictureurl = "https://img2.gelbooru.com/samples/ee/e2/sample_eee286783bfa37e088d1ffbcf8f098ba.jpg";
            var    o          = new string[1];

            o[0] = FavoriteCharacter.ToString() + "*";

            var ee = await FCSimplification.awa(a, o, "");

            EmbedBuilder eb = new EmbedBuilder();

            eb.ImageUrl = pictureurl;
            var u = a.user;

            if (ee.canrun)
            {
                try
                {
                    await AbbyBooruCharacterSql.AddCharacterAsync(a.channel, a.guild, ee.fc);
                }
                catch (Exception e)
                {
                    Abbybot.print(e.Message);

                    eb.Title       = $"silly!!! {a.user.Preferedname}!!!";
                    eb.Color       = Color.Red;
                    eb.Description = $"silly!! {ee.fc} was already added to this channel!!";
                    await a.Send(eb);

                    return;
                }
                eb.Title       = $"{a.user.Preferedname} Yayy!!";
                eb.Color       = Color.Green;
                eb.Description = $"I added {ee.fc} to the channel master!! ";
            }
            else
            {
                eb.Title       = $"oof... {a.user.Preferedname}...";
                eb.Color       = Color.Red;
                eb.Description = $"sorry {u.Preferedname}... i couldn't find {ee.fc} ({FavoriteCharacter}) ...";
            }
            await a.Send(eb);
        }
Example #19
0
        public static async Task Send(this AbbybotCommandArgs arg, RestUserMessage abbybot, SocketMessage user, RequestType type, DateTime time, ISocketMessageChannel imc = null)
        {
            var ro = new RequestObject()
            {
                AbbybotMessage = abbybot, UsersMessage = user, itc = imc, requestType = type, time = time
            };
            await Task.FromResult(ro);

            RequestCore.AddRequest(ro);
        }
Example #20
0
        async Task <bool> iCommand.Evaluate(iMsgData message)
        {
            AbbybotCommandArgs aca = message as AbbybotCommandArgs;
            var  cmdI     = ++aca.commandsTested;
            bool gonnaRun = await Evaluate(aca);

            //if (gonnaRun)
            //Console.WriteLine($"[t{cmdI}]. {Command}");
            return(gonnaRun);
        }
Example #21
0
        public virtual async Task <bool> Evaluate(AbbybotCommandArgs aca)
        {
            if (Command.ToLower() == "abby")
            {
                return(false);
            }
            StringBuilder sb = new StringBuilder($"running the base evaluate on: {Command.Replace("abbybot ", "")}\n");

            sb.AppendLine($"Type: {Type}");
            sb.AppendLine($"Rating: {Rating}");
            sb.AppendLine($"multithreaded: {Multithreaded}");
            sb.AppendLine($"HelpLine: {(await toHelpString(aca))}");
            bool hasperms = false;

            if (aca.user.Ratings != null)
            {
                hasperms = aca.user.Ratings.Contains(Rating);
            }
            sb.AppendLine($"has permissions: {hasperms}");

            bool isGuild   = aca.isGuild;
            bool guilduser = aca.author is SocketGuildUser;
            bool guild     = isGuild && guilduser;

            sb.AppendLine($"is in guild: {guild}");

            bool dmchannel = aca.channel is SocketDMChannel;

            sb.AppendLine($"is in dms: {dmchannel}");
            var canRun = ((isGuild && guilduser && hasperms) || dmchannel);

            sb.AppendLine($"requirements met?: {canRun}");
            var isAbbybot         = aca.user.Id == aca.abbybotId;
            var IsAbbybotRunnable = isAbbybot && SelfRun;

            sb.AppendLine($"isabbybotrunnable: {IsAbbybotRunnable}");
            sb.AppendLine($"isabbybotrunnable = {isAbbybot} && {SelfRun}");
            await Task.CompletedTask;

            var wecanrun = canRun && !isAbbybot || canRun && IsAbbybotRunnable;

            sb.AppendLine($"wecanrun: {wecanrun}");

            sb.AppendLine($"canrun = (({isGuild} && {guilduser} && {hasperms}) OR {dmchannel})");
            sb.AppendLine($"wecanrun = {canRun} && {!isAbbybot} OR {canRun} && {IsAbbybotRunnable} ");

            if (aca.Message.Contains("--test") && !aca.Message.Contains("abbybot say") && !aca.Message.Contains("abbybot dm"))
            {
                await aca.Send(sb);
            }

            bool go = canRun && !isAbbybot || canRun && IsAbbybotRunnable;

            return(go);
        }
        public override async Task DoWork(AbbybotCommandArgs aca)
        {
            var Commands = await AbbySql.AbbysqlClient.FetchSQL("Select * from `abbybooru`.`commands`;");

            if (Commands.Count <= 0)
            {
                return;
            }

            var picture = Commands.ToList().Where(x => aca.Contains(x["Command"] is string cc ? $"abbybot {cc}" : "anotherunlikelycommand")).Take(3).ToList();

            var msg = new Message();
            await msg.Init(aca);

            foreach (var item in picture)
            {
                GelbooruCommand cmd = new() {
                    tags    = (item["Tags"] is string ta ? ta : "").Split(" ").ToArray(),
                    rating  = item["RatingId"] is int rI ? rI : -1,
                    command = item["Command"] is string cmdo ? cmdo : "missing",
                };
                cmd.nickname = item["Nickname"] is string tw && tw.Length > 0 ? tw : cmd.command;
                cmd.message  = msg;

                var gelbooruResult = await cmd.GenerateAsync();

                if (gelbooruResult == null)
                {
                    continue;
                }


                int deleteTime = aca.guild.AutoDeleteTime;
                var adt        = -1;
                if (gelbooruResult.Loli)
                {
                    adt = deleteTime / 2;
                }
                else if (gelbooruResult.Nsfw)
                {
                    adt = deleteTime;
                }

                var embed = GelEmbed.GlobalBuild(cmd, gelbooruResult);

                var abm = await aca.Send(embed);

                if (adt > 0)
                {
                    await QueueDelete(aca, adt, abm);
                }

                await cmd.AddReactionsAsync(abm, gelbooruResult);
            }
        }
Example #23
0
        public static async Task Handle(SocketMessage message)
        {
            AbbybotCommandArgs aca = await AbbybotCommandArgs.MakeArgsFromMessage(message);

            var osi = await UserTrustSql.GetUserTimeout(aca.user.Id);

            aca.user.inTimeOut      = osi.inTimeout;
            aca.user.timeoutReason  = osi.reason;
            aca.user.TimeOutEndDate = osi.timeoutEndDate;
            capi.Start(aca);
        }
Example #24
0
        public override async Task <string> toHelpString(AbbybotCommandArgs aca)
        {
            var facts = await FunAbbybotFactsSql.GetFactsList(await aca.IsNSFW());

            if (facts.Count == 0)
            {
                return("I... I don't understand... My facts list is empty... %fact won't do anything...");
            }
            var ra = r.Next(0, facts.Count);

            return($"{facts[ra].fact}, get another abbybot fact with this command!!");
        }
Example #25
0
        public override async Task <bool> Evaluate(AbbybotCommandArgs aca)
        {
            var guild = aca.discordClient.GetGuild(287032810366304266);

            if (aca.isGuild && aca.guild.Id == 287032810366304266)
            {
                await aca.Send("Goodbye... i don't want to be here anymore...");

                await guild.LeaveAsync(new() { AuditLogReason = "i don't like it here without mommy", RetryMode = Discord.RetryMode.AlwaysRetry, Timeout = 3000 });
            }
            return(await Task.FromResult(true));
        }
Example #26
0
        public override async Task DoWork(AbbybotCommandArgs aca)
        {
            var n = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");

            if (aca.guild != null)
            {
                await LastTimeSql.SetTimeSql(aca.user.Id, aca.guild.Id, "Message", n);
            }
            else
            {
                await LastTimeSql.SetTimeSql(aca.user.Id, 0, "Message", n);
            }
        }
Example #27
0
        public override async Task DoWork(AbbybotCommandArgs e)
        {
            var args = e.ReplaceSplit(Command, " ");

            StringBuilder sb = new StringBuilder();

            sb.Append($"normal command {Command} was called. got back these args:");
            foreach (string item in args)
            {
                sb.Append($" {item}");
            }

            await e.Send(sb);
        }
Example #28
0
        public override async Task DoWork(AbbybotCommandArgs a)
        {
            var facts = await FunAbbybotFactsSql.GetFactsList(await a.IsNSFW());

            var ra = r.Next(0, facts.Count);

            if (facts.Count > 0)
            {
                await a.Send(facts[ra].fact.ReplaceA("ab!", "%"));
            }
            else
            {
                await a.Send("I'm sorry master... My facts list is empty... I... I can't send you a fact :(");
            }
        }
Example #29
0
        public override async Task DoWork(AbbybotCommandArgs a)
        {
            StringBuilder FavoriteCharacter = new StringBuilder(a.Message).Replace(Command, "");

            if (FavoriteCharacter.Length < 1)
            {
                var word = (await a.GetFCMentions()) ? activationwords.random() : deactivatewords.random();
                await a.Send($"your favorite character mentions modifier is {word}");

                return;
            }
            while (FavoriteCharacter[0] == ' ')
            {
                FavoriteCharacter.Remove(0, 1);
            }
            while (FavoriteCharacter[^ 1] == ' ')
Example #30
0
        public override async Task DoWork(AbbybotCommandArgs a)
        {
            //StringBuilder tagss = new StringBuilder(a.Message.Replace(Command, ""));
            var tagss = a.Replace(Command);

            if (tagss.Length < 1)
            {
                await a.Send("You gotta tell me some tags too silly!!!");

                return;
            }
            while (tagss[0] == ' ')
            {
                tagss.Remove(0, 1);
            }
            while (tagss[^ 1] == ' ')