コード例 #1
0
ファイル: MainForm.cs プロジェクト: WalrusQ/CouplingAlturos
 private void RecognitionOutput(IRecognitionResult result, string imageName)
 {
     dataGridViewResult.DataSource = result.Items;
     picBx.Image = result.DrawBorder2Image();
     imageLogger = new ImageLogger(result, imageName);
     imageLogger.Save($@"Results/{imageName}.json");
 }
コード例 #2
0
        private async Task Client_MessageReceived(SocketMessage arg)
        {
            var msg     = arg as SocketUserMessage;
            var context = new SocketCommandContext(Client, msg);

            if (msg.Content.Length <= 1 && msg.Embeds.Count == 0 && msg.Attachments.Count == 0)
            {
                return;
            }
            if (context.User.IsBot)
            {
                return;
            }

            var guildOptions = GlobalVars.GuildOptions.Single(x => x.GuildID == context.Guild.Id);

            if ((context.Message == null || context.Message.Content == "") && arg.Attachments.Count == 0 && arg.Embeds.Count == 0)
            {
                return;
            }

            if (GlobalVars.IgnoredUsers.ContainsKey(context.User.Id))
            {
                return;
            }

            //Get rid of Zero-Width Spaces
            context.Message.Content.Replace("\u200b", "");

            int argPos = 0;

            if (guildOptions.Options.LogChannelID != 0 && !msg.Content.StartsWith($"{guildOptions.Prefix}dm"))
            {
                if (guildOptions.Options.LogEmbeds)
                {
                    if (msg.Embeds.Count > 0)
                    {
                        await ImageLogger.LogEmbed(msg, guildOptions.Options.LogChannelID, Client);
                    }
                }
                if (guildOptions.Options.LogAttachments)
                {
                    if (msg.Attachments.Count > 0)
                    {
                        await ImageLogger.LogAttachment(msg, guildOptions.Options.LogChannelID, Client);
                    }
                }
            }

            if (!(msg.HasStringPrefix(guildOptions.Prefix, ref argPos, StringComparison.CurrentCultureIgnoreCase)) && !(msg.HasMentionPrefix(Client.CurrentUser, ref argPos)))
            {
                return;
            }


            if (!await GlobalVars.CheckUserTimeout(context.Message.Author, context.Guild.Id, context.Channel))
            {
                return;
            }
            IResult Result = null;

            try
            {
                Result = await Commands.ExecuteAsync(context, argPos, Provider);

                if (Result.Error == CommandError.UnmetPrecondition)
                {
                    var errorMsg = await context.Channel.SendMessageAsync(Result.ErrorReason.Contains("USERMENTION")?Result.ErrorReason.Replace("USERMENTION", context.Message.Author.Mention) : Result.ErrorReason);

                    GlobalVars.AddRandomTracker(errorMsg);
                }
                else if (!Result.IsSuccess)
                {
                    if (Result.ErrorReason.ToLower().Contains("unknown command"))
                    {
                        await Client_Log(new LogMessage(LogSeverity.Error, "Client_MessageReceived", $"Unknown command sent by {context.Message.Author.ToString()} in guild: {context.Guild.Id} - Command text: {context.Message.Content}"));
                    }
                    else if (Result.ErrorReason.ToLower().Contains("too many param"))
                    {
                        await Client_Log(new LogMessage(LogSeverity.Warning, "Client_MessageReceived", $"Invalid parameters sent by {context.Message.Author.ToString()} in guild: {context.Guild.Id} - Command text: {context.Message.Content}"));

                        var errorMsg = await context.Channel.SendMessageAsync($"Pretty sure you goofed on the parameters you've supplied there {context.Message.Author.Mention}!");

                        GlobalVars.AddRandomTracker(errorMsg);
                    }
                    else
                    {
                        await Client_Log(new LogMessage(LogSeverity.Error, "Client_MessageReceived", $"Command text: {context.Message.Content} | Error: {Result.ErrorReason}"));
                    }
                }
                var x = GlobalVars.UserTimeouts.SingleOrDefault(b => b.TrackedUser.Id == context.Message.Author.Id);
                if (x == null)
                {
                    GlobalVars.AddUserTimeout(context.Message.Author, context.Guild.Id);
                }
            }
            catch (Exception ex)
            {
                await Client_Log(new LogMessage(LogSeverity.Critical, context.Message.Content, Result.ErrorReason, ex));
            }
        }
コード例 #3
0
ファイル: Emotes.cs プロジェクト: Cruciatum/Haphrain
        public async Task RequestEmote(string trigger, string url, bool RequiresTarget, [Remainder] string msg)
        {
            if (msg == "")
            {
                msg = $"is {trigger}";
            }
            EmoteRequest er       = new EmoteRequest(Context.Message.Author, trigger, RequiresTarget, msg, false);
            string       finalURL = "";

            string[] imgFileTypes = { ".jpg", ".jpeg", ".gif", ".png" };
            foreach (string s in imgFileTypes)
            {
                if (url.Substring(url.Length - s.Length, s.Length) == s)
                {
                    finalURL         = url;
                    er.FileExtension = s;
                }
            }
            if (finalURL == "")
            {
                finalURL = url.Contains("tenor") ? ImageLogger.GetTenorGIF(url) : url.Contains("gfycat") ? ImageLogger.GetGfyCatAsync(url) : "";
                foreach (string s in imgFileTypes)
                {
                    if (finalURL.Substring(finalURL.Length - s.Length, s.Length) == s)
                    {
                        er.FileExtension = s;
                    }
                }
            }

            if (finalURL != "")
            {
                string dir = RequestLocation.Substring(0, RequestLocation.Length - 1);
                if (!Directory.Exists(dir))
                {
                    Directory.CreateDirectory(dir);
                }
                using (var c = new WebClient())
                {
                    try
                    {
                        c.DownloadFile(finalURL, RequestLocation + er.FileName);
                    }
                    catch (Exception ex) { }
                    while (c.IsBusy)
                    {
                    }
                }

                GlobalVars.EmoteRequests.Add(er.RequestID, er);



                try
                {
                    await SendRequest(er);

                    var m = await Context.Channel.SendMessageAsync($"Emote requested, emote ID: {er.RequestID}");

                    GlobalVars.AddRandomTracker(m, 15);
                    var perms = Context.Guild.GetUser(Context.Client.CurrentUser.Id).GetPermissions(Context.Channel as IGuildChannel);
                    if (perms.ManageMessages)
                    {
                        try { await Context.Message.DeleteAsync(); }
                        catch { }
                    }
                }
                catch (Discord.Net.HttpException ex)
                {
                    if (ex.DiscordCode == 40005)
                    {
                        var m = await Context.Channel.SendMessageAsync($"{Context.User.Mention}, the filesize is too large (~{new FileInfo(RequestLocation + er.FileName).Length / 1048576}MB). Max filesize: 8MB\nPlease resize your image or use another.");

                        GlobalVars.AddRandomTracker(m, 15);
                        File.Delete(RequestLocation + er.FileName);
                        GlobalVars.EmoteRequests.Remove(er.RequestID);
                    }
                    await Program.Client_Log(new LogMessage(LogSeverity.Error, "Emote Request", ex.Message, ex));
                }
            }
            else
            {
                var m = await Context.Channel.SendMessageAsync("Could not get the download URL for this image.");

                GlobalVars.AddRandomTracker(m, 20);
            }
        }