Added gambling, raffle done
This commit is contained in:
		| @@ -3,15 +3,13 @@ using NadekoBot.Classes; | ||||
| using NadekoBot.Extensions; | ||||
| using System; | ||||
| using System.Collections.Generic; | ||||
| using System.Drawing; | ||||
| using System.Drawing.Imaging; | ||||
| using System.Linq; | ||||
| using System.Text.RegularExpressions; | ||||
| using System.Threading.Tasks; | ||||
| 
 | ||||
| namespace NadekoBot.Modules.Gambling | ||||
| { | ||||
|     internal class DiceRollCommand : DiscordCommand | ||||
|     public partial class DiceRollCommands | ||||
|     { | ||||
| 
 | ||||
|         public DiceRollCommand(DiscordModule module) : base(module) { } | ||||
| @@ -1,53 +1,47 @@ | ||||
| using Discord; | ||||
| using Discord.Commands; | ||||
| using Discord.Modules; | ||||
| using NadekoBot.Classes; | ||||
| using NadekoBot.DataModels; | ||||
| using NadekoBot.Attributes; | ||||
| using NadekoBot.Extensions; | ||||
| using NadekoBot.Modules.Gambling.Commands; | ||||
| using NadekoBot.Modules.Permissions.Classes; | ||||
| using System; | ||||
| using System.Linq; | ||||
| using System.Text; | ||||
| using System.Threading.Tasks; | ||||
| using NadekoBot.Services; | ||||
| 
 | ||||
| //todo DB | ||||
| namespace NadekoBot.Modules.Gambling | ||||
| { | ||||
|     internal class GamblingModule : DiscordModule | ||||
|     [Module("$", AppendSpace = false)] | ||||
|     public partial class Gambling : DiscordModule | ||||
|     { | ||||
|         public GamblingModule() | ||||
|         public Gambling(ILocalization loc, CommandService cmds, IBotConfiguration config, IDiscordClient client) : base(loc, cmds, config, client) | ||||
|         { | ||||
|             commands.Add(new DrawCommand(this)); | ||||
|             commands.Add(new FlipCoinCommand(this)); | ||||
|             commands.Add(new DiceRollCommand(this)); | ||||
|             commands.Add(new AnimalRacing(this)); | ||||
|         } | ||||
| 
 | ||||
|         public override string Prefix { get; } = NadekoBot.Config.CommandPrefixes.Gambling; | ||||
|         [LocalizedCommand, LocalizedDescription, LocalizedSummary] | ||||
|         [RequireContext(ContextType.Guild)] | ||||
|         public async Task Raffle(IMessage imsg, [Remainder] IRole role = null) | ||||
|         { | ||||
|             var channel = imsg.Channel as ITextChannel; | ||||
| 
 | ||||
|             role = role ?? channel.Guild.EveryoneRole; | ||||
| 
 | ||||
|             var members = (await role.Members()).Where(u => u.Status == UserStatus.Online); | ||||
|             var membersArray = members as IUser[] ?? members.ToArray(); | ||||
|             var usr = membersArray[new Random().Next(0, membersArray.Length)]; | ||||
|             await imsg.Channel.SendMessageAsync($"**Raffled user:** {usr.Username} (id: {usr.Id})").ConfigureAwait(false); | ||||
| 
 | ||||
|         } | ||||
|         public override void Install(ModuleManager manager) | ||||
|         { | ||||
|             manager.CreateCommands("", cgb => | ||||
|             { | ||||
|                 cgb.AddCheck(PermissionChecker.Instance); | ||||
| 
 | ||||
|                 commands.ForEach(com => com.Init(cgb)); | ||||
| 
 | ||||
|                 cgb.CreateCommand(Prefix + "raffle") | ||||
|                     .Description($"Prints a name and ID of a random user from the online list from the (optional) role. | `{Prefix}raffle` or `{Prefix}raffle RoleName`") | ||||
|                     .Parameter("role", ParameterType.Optional) | ||||
|                     .Do(async e => | ||||
|                     { | ||||
|                         var arg = string.IsNullOrWhiteSpace(e.GetArg("role")) ? "@everyone" : e.GetArg("role"); | ||||
|                         var role = e.Server.FindRoles(arg).FirstOrDefault(); | ||||
|                         if (role == null) | ||||
|                         { | ||||
|                             await imsg.Channel.SendMessageAsync("💢 Role not found.").ConfigureAwait(false); | ||||
|                             return; | ||||
|                         } | ||||
|                         var members = role.Members.Where(u => u.Status == UserStatus.Online); // only online | ||||
|                         var membersArray = members as User[] ?? members.ToArray(); | ||||
|                         var usr = membersArray[new Random().Next(0, membersArray.Length)]; | ||||
|                         await imsg.Channel.SendMessageAsync($"**Raffled user:** {usr.Name} (id: {usr.Id})").ConfigureAwait(false); | ||||
|                          | ||||
|                     }); | ||||
| 
 | ||||
|                 cgb.CreateCommand(Prefix + "$$") | ||||
		Reference in New Issue
	
	Block a user