public async Task EditLastMessage([Remainder] [Summary("The new text replacing the old one.")] string data) { using (var ctx = new AvatarBotContext()) { var server = ctx.Servers.Single(x => x.DiscordID == (long)Context.Guild.Id); try { var message = ctx.Messages.Where(x => x.DiscordChannelID == (long)Context.Channel.Id && x.Server.DiscordID == (long)Context.Guild.Id && x.Player.DiscordID == (long)Context.User.Id) .OrderByDescending(x => x.LastUpdated).FirstOrDefault(); if (message == null) { return; } message.Text = AutoFormater.SimpleFormat(data); IUserMessage msg = (IUserMessage)await Context.Channel.GetMessageAsync((ulong)message.DiscordMessageID); await msg.ModifyAsync(x => x.Embed = message.ToEmbed()); message.LastUpdated = DateTime.UtcNow; ctx.SaveChanges(); await Context.Channel.DeleteMessageAsync(Context.Message); } catch (Exception e) { await ReplyAsync(Localization.Format(server.Localization, "message_edit_error", e.Message)); Console.WriteLine($"{e.Message}\n{e.StackTrace}"); } } }
private async Task <Message> Talk(PC target, string text) { var emd = AutoFormater.Format(target, text); var res = await Context.Channel.SendMessageAsync("", false, emd.Build()); int colour = target.Colour; var message = new Message() { DiscordChannelID = (long)Context.Channel.Id, DiscordMessageID = (long)res.Id, LastUpdated = DateTime.UtcNow, Title = target.Name, Text = text, Colour = colour, Icon = target.Icon }; await Context.Channel.DeleteMessageAsync(Context.Message); return(message); }