public async Task Invite(CommandContext ctx, [Description("Участник")] DiscordMember member) { var ship = ShipList.GetOwnedShip(ctx.Member.Id); if (ship == null) { await ctx.RespondAsync($"{Bot.BotSettings.ErrorEmoji} Вы не являетесь владельцем корабля!"); return; } if (ctx.Member == member) { await ctx.RespondAsync($"{Bot.BotSettings.ErrorEmoji} Нельзя пригласить самого себя!"); return; } ship.AddMember(member.Id); ShipList.SaveToXML(Bot.BotSettings.ShipXML); await member.SendMessageAsync( $"Вы были приглашены на корабль **{ship.Name}** участником **{ctx.Member.Username}**! Отправьте " + $"`{Bot.BotSettings.Prefix}yes {ship.Name}` для принятия приглашения, или `{Bot.BotSettings.Prefix}no {ship.Name}` для отказа."); await ctx.RespondAsync( $"{Bot.BotSettings.OkEmoji} Успешно отправлено приглашение участнику {member.Username}!"); }
public async Task Kick(CommandContext ctx, [Description("Участник")] DiscordMember member) { var ship = ShipList.GetOwnedShip(ctx.Member.Id); if (ship == null) { await ctx.RespondAsync($"{Bot.BotSettings.ErrorEmoji} Вы не являетесь владельцем корабля!"); return; } if (ctx.Member == member) { await ctx.RespondAsync($"{Bot.BotSettings.ErrorEmoji} Нельзя выгнать самого себя!"); return; } if (!ship.Members.ContainsKey(member.Id)) { await ctx.RespondAsync($"{Bot.BotSettings.ErrorEmoji} Этот участник не является членом вашего корабля!"); return; } if (!ship.Members[member.Id].Status) { await ctx.RespondAsync( $"{Bot.BotSettings.ErrorEmoji} Используйте команду `!uninvite [DiscordMember]`, чтобы отозвать приглашение!"); return; } ship.RemoveMember(member.Id); await member.RevokeRoleAsync(ctx.Guild.GetRole(ship.Role)); ShipList.SaveToXML(Bot.BotSettings.ShipXML); await ctx.RespondAsync( $"{Bot.BotSettings.OkEmoji} Вы выгнали участника **{member.Username}** с корабля **{ship.Name}**!"); await member.SendMessageAsync($"Капитан **{ctx.Member.Username}** выгнал вас с корабля **{ship.Name}**!"); }
public async Task Prune(CommandContext ctx) { var ship = ShipList.GetOwnedShip(ctx.Member.Id); if (ship == null) { await ctx.RespondAsync($"{Bot.BotSettings.ErrorEmoji} Вы не являетесь владельцем корабля!"); return; } List <ulong> toBePruned = new List <ulong>(); foreach (var member in ship.Members) { try { var m = await ctx.Guild.GetMemberAsync(member.Value.Id); } catch (NotFoundException) { toBePruned.Add(member.Value.Id); } } int i = 0; foreach (var member in toBePruned) { ship.RemoveMember(member); ++i; } ShipList.SaveToXML(Bot.BotSettings.ShipXML); await ctx.RespondAsync($"{Bot.BotSettings.OkEmoji} Успешно завершена очистка! Было удалено **{i}** человек."); }
public async Task Rename(CommandContext ctx, [RemainingText][Description("Новое название")] string name) { var ship = ShipList.GetOwnedShip(ctx.Member.Id); if (ship == null) { await ctx.RespondAsync($"{Bot.BotSettings.ErrorEmoji} Вы не являетесь владельцем корабля!"); return; } ship.Rename(name); ShipList.SaveToXML(Bot.BotSettings.ShipXML); ShipList.ReadFromXML(Bot.BotSettings.ShipXML); //костыль адовый name = "☠" + name + "☠"; await ctx.Guild.UpdateRoleAsync(ctx.Guild.GetRole(ship.Role), name); await ctx.Guild.GetChannel(ship.Channel).ModifyAsync(name); await ctx.RespondAsync($"{Bot.BotSettings.OkEmoji} Успешно переименован корабль!"); }
public async Task List(CommandContext ctx) { var ship = ShipList.GetOwnedShip(ctx.Member.Id); if (ship == null) { await ctx.RespondAsync($"{Bot.BotSettings.ErrorEmoji} Вы не являетесь владельцем корабля!"); return; } var fs = File.Create(ship.Name + ".txt"); var sw = new StreamWriter(fs); foreach (var member in ship.Members.Values) { var type = ""; DiscordMember discordMember = null; try { discordMember = await ctx.Guild.GetMemberAsync(member.Id); } catch (NotFoundException) { continue; } var status = ""; if (!member.Status) { status = "приглашён"; } else { status = "член экипажа"; } switch (member.Type) { case MemberType.Owner: type = "Капитан"; break; case MemberType.Member: type = "Матрос"; break; } await sw.WriteLineAsync($"{type} {discordMember.DisplayName}#{discordMember.Discriminator}. " + $"Статус: {status}. Номер: {member.Id}."); } sw.Close(); fs.Close(); await ctx.Member.SendFileAsync(ship.Name + ".txt", $"{Bot.BotSettings.OkEmoji} Список членов экипажа вашего корабля."); await ctx.RespondAsync($"{Bot.BotSettings.OkEmoji} Список членов экипажа отправлен в личные сообщения!"); File.Delete(ship.Name + ".txt"); //дабы не плодить мусор }