Example #1
0
        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}");
                }
            }
        }
Example #2
0
        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);
        }