Пример #1
0
 public override Task <TypeReaderResult> ReadAsync(ICommandContext context, string input, IServiceProvider services)
 {
     try
     {
         using var ctx = new AvatarBotContext();
         var pc = new PrivateCharacter()
         {
             Character = ctx.GetPlayerCharacter(context.Guild.Id, context.User.Id, input.Replace("$", ""))
         };
         Console.WriteLine($"I found a matching private character: {pc.Character.Name}");
         return(Task.FromResult(TypeReaderResult.FromSuccess(pc)));
     }
     catch (Exception)
     {
         return(Task.FromResult(TypeReaderResult.FromError(CommandError.ParseFailed, "Could not find the private character.")));
     }
 }
Пример #2
0
        public async Task SetDefaultCharacter([Remainder]
                                              [Summary("\nAlias of the user to become the new default character.\n" +
                                                       "It must be an existing character that the player owns.")]
                                              string nameOrAlias)
        {
            using var ctx = new AvatarBotContext();
            var server = ctx.Servers.Single(x => x.DiscordID == (long)Context.Guild.Id);

            try
            {
                var player = ctx.Users.Single(x => x.DiscordID == (long)Context.User.Id);
                //player.LoadDefaultCharacters(ctx);
                var character = ctx.GetPlayerCharacter(Context.Guild.Id, Context.User.Id, nameOrAlias);
                if (character == null)
                {
                    throw new Exception(Localization.Format(server.Localization, "character_not_found", nameOrAlias));
                }
                var defChar = player.DefaultCharacters.SingleOrDefault(x => x.Server.DiscordID == (long)Context.Guild.Id);
                if (defChar == null)
                {
                    defChar = new Model.Servers.DefaultCharacter()
                    {
                        Player    = player,
                        Character = character,
                        Server    = ctx.Servers.Single(x => x.DiscordID == (long)Context.Guild.Id)
                    };
                    player.DefaultCharacters.Add(defChar);
                }
                else
                {
                    defChar.Character = character;
                }
                ctx.SaveChanges();
                await ReplyAsync(Localization.Format(server.Localization, "character_default_set", character.Name));
            }
            catch (Exception e)
            {
                await ReplyAsync(Localization.Format(server.Localization, "character_default_failed", nameOrAlias, e.Message));

                Console.WriteLine($"Couldn't set '{nameOrAlias}' as default character: {e.Message}\n{e.StackTrace}");
            }
        }