private async Task ShowDiffImplAsync(string theirs, string mine) { DiffTool diffTool = Settings.Get <Options>().DiffTool; if (!IsDiffSupported(diffTool)) { return; } await Task.Run(() => { string args = diffTool.Arguments .Replace("%theirs", $"\"{theirs}\"") .Replace("%mine", $"\"{mine}\""); cmd.Run(diffTool.Command, args); }); }
private async Task MessageReceivedInner(IMessage msg) { Session session = CreateSession(((IGuildChannel)msg.Channel).Guild); string cmdName = msg.Content.Substring(session.CommandPrefix.Length); int ix = cmdName.IndexOf(' '); if (ix != -1) { cmdName = cmdName.Remove(ix); } cmdName = cmdName.ToLowerInvariant(); try { ICmd cmd = HardCmds.ContainsKey(cmdName) ? (ICmd)HardCmds[cmdName] : session.Cmds.ContainsKey(cmdName) ? session.Cmds[cmdName] : null; if (cmd != null) { await msg.Channel.TriggerTypingAsync(); CmdContext ctx = new CmdContext(msg, session, data.AdvancedUsers.Contains(msg.Author.Id)); string res = cmd.Run(ctx); if (ctx.Result == CmdContext.CmdError.None) { bool empty = string.IsNullOrWhiteSpace(res); if (!empty || !ctx.Processed) { if (!empty && res.Length > 2000) { res = res.Remove(2000); } await ctx.Channel.SendMessageAsync(string.IsNullOrWhiteSpace(res)?ctx.GetString("ret_empty_cmd") : res); } } else if (ctx.Result == CmdContext.CmdError.NoAccess) { await msg.Channel.SendMessageAsync(ctx.GetString("err_notadmin")); } else if (ctx.Result == CmdContext.CmdError.ArgCount) { await msg.Channel.SendMessageAsync(ctx.GetString("err_params")); } //else if (ctx.Result == CmdContext.CmdError.BadFormat) // await msg.Channel.SendMessageAsync(ctx.GetString("err_badformat")); } } catch (Exception ex) { Log(ex); await msg.Channel.SendMessageAsync(session.GetString("err_generic") + ": " + ex.Message); } }