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()); }
public override async Task <bool> Evaluate(AbbybotCommandArgs cea) { Multithreaded = true; var v = cea.Message.Contains("```lua"); return(v ? await base.Evaluate(cea) : false); }
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); }
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()); }
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); } }
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); } } }
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); }
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); }
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)); }
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)); } }
public override async Task DoWork(AbbybotCommandArgs a) { await a.originalMessage.DeleteAsync(); await a.Send("Bye"); await(a.originalMessage.Channel as IGuildChannel).Guild.LeaveAsync(); }
public override async Task DoWork(AbbybotCommandArgs e) { var message = e.Replace(Command); var sb = new StringBuilder(); AbbybooruTagGenerator.FCBuilder(message, sb); await e.Send(sb); }
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")); } }
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); }
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}*"); }
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); }
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); }
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); }
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); } }
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); }
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!!"); }
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)); }
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); } }
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); }
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 :("); } }
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] == ' ')
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] == ' ')