trivia, help module converted
This commit is contained in:
parent
915153cd0a
commit
dcddd5bbe8
15
.gitignore
vendored
15
.gitignore
vendored
@ -10,21 +10,6 @@
|
||||
obj/
|
||||
# User-specific files (MonoDevelop/Xamarin Studio)
|
||||
*.userprefs
|
||||
**/Bin/Release/
|
||||
**/Bin/PRIVATE/
|
||||
!**/Bin/Debug/opus.dll
|
||||
!**/Bin/Debug/libsodium.dll
|
||||
!**/Bin/Debug/Nito.AsyncEx.Enlightenment.dll
|
||||
!**/Bin/Debug/Nito.AsyncEx.dll
|
||||
!**/Bin/Debug/WebSocket4Net.dll
|
||||
!**/Bin/Debug/sqlite3.dll
|
||||
!**/Bin/Debug/credentials_example.json
|
||||
NadekoBot/bin/debug/*.*
|
||||
NadekoBot/bin/debug/data/permissions
|
||||
NadekoBot/bin/debug/data/incidents
|
||||
NadekoBot/bin/debug/data/musicdata
|
||||
NadekoBot/bin/NadekoRelease/*.*
|
||||
!NadekoBot/bin/Debug/data/currency_images/*
|
||||
Tests/bin
|
||||
|
||||
# NuGet Packages
|
||||
|
@ -1,10 +1,6 @@
|
||||
using Discord.Commands;
|
||||
using NadekoBot.Services;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace NadekoBot.Attributes
|
||||
{
|
||||
|
@ -1,10 +1,6 @@
|
||||
using Discord.Commands;
|
||||
using NadekoBot.Services;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace NadekoBot.Attributes
|
||||
{
|
||||
|
@ -1,10 +1,6 @@
|
||||
using Discord.Commands;
|
||||
using NadekoBot.Services;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace NadekoBot.Attributes
|
||||
{
|
||||
|
@ -1,10 +1,6 @@
|
||||
using Discord;
|
||||
using Discord.Commands;
|
||||
using NadekoBot.Services;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace NadekoBot.Modules
|
||||
{
|
||||
|
@ -1,7 +1,6 @@
|
||||
using Discord;
|
||||
using Discord.Commands;
|
||||
using NadekoBot.Attributes;
|
||||
using NadekoBot.Classes;
|
||||
using NadekoBot.Extensions;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
@ -1,7 +1,6 @@
|
||||
using Discord;
|
||||
using Discord.Commands;
|
||||
using NadekoBot.Attributes;
|
||||
using NadekoBot.Classes;
|
||||
using System;
|
||||
using System.Collections.Concurrent;
|
||||
using System.Collections.Generic;
|
||||
|
@ -1,6 +1,4 @@
|
||||
using Discord;
|
||||
using Discord.Commands;
|
||||
using NadekoBot.Classes;
|
||||
using NadekoBot.Extensions;
|
||||
using System.Collections.Concurrent;
|
||||
using System.Collections.Generic;
|
||||
|
@ -1,7 +1,6 @@
|
||||
using Discord;
|
||||
using Discord.Commands;
|
||||
using NadekoBot.Attributes;
|
||||
using NadekoBot.Classes;
|
||||
using NadekoBot.Modules.Games.Commands.Trivia;
|
||||
using System;
|
||||
using System.Collections.Concurrent;
|
||||
|
140
src/NadekoBot/Modules/Help/HelpModule.cs
Normal file
140
src/NadekoBot/Modules/Help/HelpModule.cs
Normal file
@ -0,0 +1,140 @@
|
||||
using Discord.Commands;
|
||||
using NadekoBot.Extensions;
|
||||
using System.Linq;
|
||||
using Discord;
|
||||
using NadekoBot.Services;
|
||||
using System.Threading.Tasks;
|
||||
using NadekoBot.Attributes;
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Text;
|
||||
|
||||
namespace NadekoBot.Modules.Help
|
||||
{
|
||||
[Module("-", AppendSpace = false)]
|
||||
public partial class HelpModule : DiscordModule
|
||||
{
|
||||
public string HelpString {
|
||||
get {
|
||||
var str = "To add me to your server, use this link -> <https://discordapp.com/oauth2/authorize?client_id={0}&scope=bot&permissions=66186303>\n";
|
||||
return str + String.Format(str, NadekoBot.Credentials.ClientId);
|
||||
}
|
||||
}
|
||||
public HelpModule(ILocalization loc, CommandService cmds, IBotConfiguration config, IDiscordClient client) : base(loc, cmds, config, client)
|
||||
{
|
||||
}
|
||||
|
||||
[LocalizedCommand, LocalizedDescription, LocalizedSummary]
|
||||
[RequireContext(ContextType.Guild)]
|
||||
public async Task Modules(IMessage imsg)
|
||||
{
|
||||
var channel = imsg.Channel as IGuildChannel;
|
||||
|
||||
await imsg.Channel.SendMessageAsync("`List of modules:` \n• " + string.Join("\n• ", _commands.Modules.Select(m => m.Name)) + $"\n`Type \"-commands module_name\" to get a list of commands in that module.`")
|
||||
.ConfigureAwait(false);
|
||||
}
|
||||
|
||||
[LocalizedCommand, LocalizedDescription, LocalizedSummary]
|
||||
[RequireContext(ContextType.Guild)]
|
||||
public async Task Commands(IMessage imsg, [Remainder] string module)
|
||||
{
|
||||
var channel = imsg.Channel as IGuildChannel;
|
||||
|
||||
module = module?.Trim().ToUpperInvariant();
|
||||
if (string.IsNullOrWhiteSpace(module))
|
||||
return;
|
||||
var cmds = _commands.Commands.Where(c => c.Module.Name.ToUpperInvariant() == module)
|
||||
.OrderBy(c => c.Text)
|
||||
.AsEnumerable();
|
||||
var cmdsArray = cmds as Command[] ?? cmds.ToArray();
|
||||
if (!cmdsArray.Any())
|
||||
{
|
||||
await imsg.Channel.SendMessageAsync("That module does not exist.").ConfigureAwait(false);
|
||||
return;
|
||||
}
|
||||
if (module != "customreactions" && module != "conversations")
|
||||
{
|
||||
//todo aliases
|
||||
await imsg.Channel.SendTableAsync("`List Of Commands:`\n", cmdsArray, el => $"{el.Text,-15}").ConfigureAwait(false);
|
||||
}
|
||||
else
|
||||
{
|
||||
await imsg.Channel.SendMessageAsync("`List Of Commands:`\n• " + string.Join("\n• ", cmdsArray.Select(c => $"{c.Text}")));
|
||||
}
|
||||
await imsg.Channel.SendMessageAsync($"`You can type \"-h command_name\" to see the help about that specific command.`").ConfigureAwait(false);
|
||||
}
|
||||
|
||||
[LocalizedCommand, LocalizedDescription, LocalizedSummary]
|
||||
[RequireContext(ContextType.Guild)]
|
||||
public async Task Help(IMessage imsg, [Remainder] string comToFind)
|
||||
{
|
||||
var channel = imsg.Channel as IGuildChannel;
|
||||
|
||||
comToFind = comToFind?.ToLowerInvariant();
|
||||
if (string.IsNullOrWhiteSpace(comToFind))
|
||||
{
|
||||
await (await (imsg.Author as IGuildUser).CreateDMChannelAsync()).SendMessageAsync(HelpString).ConfigureAwait(false);
|
||||
return;
|
||||
}
|
||||
var com = _commands.Commands.FirstOrDefault(c => c.Text.ToLowerInvariant() == comToFind);
|
||||
|
||||
//todo aliases
|
||||
if (com != null)
|
||||
await imsg.Channel.SendMessageAsync($@"**__Help for:__ `{com.Text}`**
|
||||
**Desc:** {com.Description}
|
||||
**Usage:** {com.Summary}").ConfigureAwait(false);
|
||||
}
|
||||
|
||||
[LocalizedCommand, LocalizedDescription, LocalizedSummary]
|
||||
[RequireContext(ContextType.Guild)]
|
||||
public async Task Hgit(IMessage imsg)
|
||||
{
|
||||
var helpstr = new StringBuilder();
|
||||
|
||||
var lastModule = "";
|
||||
foreach (var com in _commands.Commands)
|
||||
{
|
||||
if (com.Module.Name != lastModule)
|
||||
{
|
||||
helpstr.AppendLine("\n### " + com.Module.Name + " ");
|
||||
helpstr.AppendLine("Command and aliases | Description | Usage");
|
||||
helpstr.AppendLine("----------------|--------------|-------");
|
||||
lastModule = com.Module.Name;
|
||||
}
|
||||
//todo aliases
|
||||
helpstr.AppendLine($"`{com.Text}` | {com.Description} | {com.Summary}");
|
||||
}
|
||||
helpstr = helpstr.Replace((await NadekoBot.Client.GetCurrentUserAsync()).Username , "@BotName");
|
||||
#if DEBUG
|
||||
File.WriteAllText("../../../docs/Commands List.md", helpstr.ToString());
|
||||
#else
|
||||
File.WriteAllText("commandlist.md", helpstr.ToString());
|
||||
#endif
|
||||
}
|
||||
|
||||
[LocalizedCommand, LocalizedDescription, LocalizedSummary]
|
||||
[RequireContext(ContextType.Guild)]
|
||||
public async Task Guide(IMessage imsg)
|
||||
{
|
||||
var channel = imsg.Channel as IGuildChannel;
|
||||
|
||||
await imsg.Channel.SendMessageAsync(
|
||||
@"**LIST OF COMMANDS**: <http://nadekobot.readthedocs.io/en/latest/Commands%20List/>
|
||||
**Hosting Guides and docs can be found here**: <http://nadekobot.rtfd.io>").ConfigureAwait(false);
|
||||
}
|
||||
|
||||
[LocalizedCommand, LocalizedDescription, LocalizedSummary]
|
||||
[RequireContext(ContextType.Guild)]
|
||||
public async Task Donate(IMessage imsg)
|
||||
{
|
||||
var channel = imsg.Channel as IGuildChannel;
|
||||
|
||||
await imsg.Channel.SendMessageAsync(
|
||||
$@"You can support the project on patreon. <https://patreon.com/nadekobot> or
|
||||
You can send donations to `nadekodiscordbot@gmail.com`
|
||||
Don't forget to leave your discord name or id in the message.
|
||||
|
||||
**Thank you** ♥️").ConfigureAwait(false);
|
||||
}
|
||||
}
|
||||
}
|
@ -8,7 +8,6 @@ using System.Threading.Tasks;
|
||||
using NadekoBot.Services;
|
||||
using System.Net.Http;
|
||||
using System.Text.RegularExpressions;
|
||||
using System.Collections.Generic;
|
||||
using System.Xml.Linq;
|
||||
|
||||
namespace NadekoBot.Modules.NSFW
|
||||
@ -16,9 +15,6 @@ namespace NadekoBot.Modules.NSFW
|
||||
[Module("~", AppendSpace = false)]
|
||||
public class NSFWModule : DiscordModule
|
||||
{
|
||||
|
||||
private readonly Random rng = new Random();
|
||||
|
||||
public NSFWModule(ILocalization loc, CommandService cmds, IBotConfiguration config, IDiscordClient client) : base(loc, cmds, config, client)
|
||||
{
|
||||
}
|
||||
@ -117,7 +113,7 @@ namespace NadekoBot.Modules.NSFW
|
||||
JToken obj;
|
||||
using (var http = new HttpClient())
|
||||
{
|
||||
obj = JArray.Parse(await http.GetStringAsync($"http://api.oboobs.ru/boobs/{rng.Next(0, 9380)}").ConfigureAwait(false))[0];
|
||||
obj = JArray.Parse(await http.GetStringAsync($"http://api.oboobs.ru/boobs/{ new Random().Next(0, 9880) }").ConfigureAwait(false))[0];
|
||||
}
|
||||
await imsg.Channel.SendMessageAsync($"http://media.oboobs.ru/{ obj["preview"].ToString() }").ConfigureAwait(false);
|
||||
}
|
||||
@ -138,7 +134,7 @@ namespace NadekoBot.Modules.NSFW
|
||||
JToken obj;
|
||||
using (var http = new HttpClient())
|
||||
{
|
||||
obj = JArray.Parse(await http.GetStringAsync($"http://api.obutts.ru/butts/{rng.Next(0, 3373)}").ConfigureAwait(false))[0];
|
||||
obj = JArray.Parse(await http.GetStringAsync($"http://api.obutts.ru/butts/{ new Random().Next(0, 3873) }").ConfigureAwait(false))[0];
|
||||
}
|
||||
await imsg.Channel.SendMessageAsync($"http://media.obutts.ru/{ obj["preview"].ToString() }").ConfigureAwait(false);
|
||||
}
|
||||
|
@ -1,12 +1,8 @@
|
||||
using NadekoBot.Modules.Searches.Commands.Models;
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Net;
|
||||
using System.Net.Http;
|
||||
using System.Text;
|
||||
using System.Text.RegularExpressions;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
|
@ -1,5 +1,4 @@
|
||||
using Discord.Commands;
|
||||
using NadekoBot.Classes;
|
||||
using Newtonsoft.Json;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
@ -1,8 +1,4 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace NadekoBot.Modules.Searches.Commands.Models
|
||||
{
|
||||
|
@ -1,9 +1,4 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace NadekoBot.Modules.Searches.Commands.Models
|
||||
namespace NadekoBot.Modules.Searches.Commands.Models
|
||||
{
|
||||
public class WikipediaApiModel
|
||||
{
|
||||
|
@ -1,9 +1,4 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace NadekoBot.Modules.Searches.Commands.Models
|
||||
namespace NadekoBot.Modules.Searches.Commands.Models
|
||||
{
|
||||
public class WoWJoke
|
||||
{
|
||||
|
@ -4,19 +4,15 @@ using NadekoBot.Modules.Searches.Commands.IMDB;
|
||||
using Newtonsoft.Json;
|
||||
using Newtonsoft.Json.Linq;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Net.Http;
|
||||
using NadekoBot.Services;
|
||||
using System.Threading.Tasks;
|
||||
using NadekoBot.Attributes;
|
||||
using NadekoBot.Extensions;
|
||||
using Discord.API;
|
||||
using System.Text.RegularExpressions;
|
||||
using System.Net;
|
||||
using NadekoBot.Modules.Searches.Commands.Models;
|
||||
using Google.Apis.YouTube.v3;
|
||||
|
||||
namespace NadekoBot.Modules.Searches
|
||||
{
|
||||
@ -306,7 +302,7 @@ $@"🌍 **Weather for** 【{obj["target"]}】
|
||||
http.DefaultRequestHeaders.Add("X-Mashape-Key", NadekoBot.Credentials.MashapeKey);
|
||||
res = await http.GetStringAsync($"https://tagdef.p.mashape.com/one.{Uri.EscapeUriString(arg)}.json").ConfigureAwait(false);
|
||||
}
|
||||
|
||||
|
||||
try
|
||||
{
|
||||
var items = JObject.Parse(res);
|
||||
@ -355,7 +351,7 @@ $@"🌍 **Weather for** 【{obj["target"]}】
|
||||
if (string.IsNullOrWhiteSpace(usrStr))
|
||||
return;
|
||||
|
||||
var usr = (await channel.Guild.GetUsersAsync()).Where(u=>u.Username.ToUpperInvariant() == usrStr).FirstOrDefault();
|
||||
var usr = (await channel.Guild.GetUsersAsync()).Where(u => u.Username.ToUpperInvariant() == usrStr).FirstOrDefault();
|
||||
|
||||
if (usr == null || string.IsNullOrWhiteSpace(usr.AvatarUrl))
|
||||
return;
|
||||
@ -495,5 +491,4 @@ $@"🌍 **Weather for** 【{obj["target"]}】
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
145
src/NadekoBot/Modules/Trello/TrelloModule.cs
Normal file
145
src/NadekoBot/Modules/Trello/TrelloModule.cs
Normal file
@ -0,0 +1,145 @@
|
||||
//using Discord.Modules;
|
||||
//using Manatee.Trello;
|
||||
//using Manatee.Trello.ManateeJson;
|
||||
//using NadekoBot.Extensions;
|
||||
//using NadekoBot.Modules.Permissions.Classes;
|
||||
//using System;
|
||||
//using System.Collections.Generic;
|
||||
//using System.Linq;
|
||||
//using System.Timers;
|
||||
//using Action = Manatee.Trello.Action;
|
||||
////todo rewrite
|
||||
//namespace NadekoBot.Modules.Trello
|
||||
//{
|
||||
// internal class TrelloModule : DiscordModule
|
||||
// {
|
||||
// private readonly Timer t = new Timer { Interval = 2000 };
|
||||
// public override string Prefix { get; } = NadekoBot.Config.CommandPrefixes.Trello;
|
||||
|
||||
// public override void Install(ModuleManager manager)
|
||||
// {
|
||||
|
||||
// var client = manager.Client;
|
||||
|
||||
// var serializer = new ManateeSerializer();
|
||||
// TrelloConfiguration.Serializer = serializer;
|
||||
// TrelloConfiguration.Deserializer = serializer;
|
||||
// TrelloConfiguration.JsonFactory = new ManateeFactory();
|
||||
// TrelloConfiguration.RestClientProvider = new Manatee.Trello.WebApi.WebApiClientProvider();
|
||||
// TrelloAuthorization.Default.AppKey = NadekoBot.Creds.TrelloAppKey;
|
||||
// //TrelloAuthorization.Default.UserToken = "[your user token]";
|
||||
|
||||
// Discord.Channel bound = null;
|
||||
// Board board = null;
|
||||
|
||||
// List<string> last5ActionIDs = null;
|
||||
// t.Elapsed += async (s, e) =>
|
||||
// {
|
||||
// try
|
||||
// {
|
||||
// if (board == null || bound == null)
|
||||
// return; //do nothing if there is no bound board
|
||||
|
||||
// board.Refresh();
|
||||
// var cur5Actions = board.Actions.Take(board.Actions.Count() < 5 ? board.Actions.Count() : 5);
|
||||
// var cur5ActionsArray = cur5Actions as Action[] ?? cur5Actions.ToArray();
|
||||
|
||||
// if (last5ActionIDs == null)
|
||||
// {
|
||||
// last5ActionIDs = cur5ActionsArray.Select(a => a.Id).ToList();
|
||||
// return;
|
||||
// }
|
||||
|
||||
// foreach (var a in cur5ActionsArray.Where(ca => !last5ActionIDs.Contains(ca.Id)))
|
||||
// {
|
||||
// await bound.Send("**--TRELLO NOTIFICATION--**\n" + a.ToString()).ConfigureAwait(false);
|
||||
// }
|
||||
// last5ActionIDs.Clear();
|
||||
// last5ActionIDs.AddRange(cur5ActionsArray.Select(a => a.Id));
|
||||
// }
|
||||
// catch (Exception ex)
|
||||
// {
|
||||
// Console.WriteLine("Timer failed " + ex.ToString());
|
||||
// }
|
||||
// };
|
||||
|
||||
// manager.CreateCommands("", cgb =>
|
||||
// {
|
||||
|
||||
// cgb.AddCheck(PermissionChecker.Instance);
|
||||
|
||||
// cgb.CreateCommand(Prefix + "bind")
|
||||
// .Description("Bind a trello bot to a single channel. " +
|
||||
// "You will receive notifications from your board when something is added or edited." +
|
||||
// $" **Bot Owner Only!**| `{Prefix}bind [board_id]`")
|
||||
// .Parameter("board_id", Discord.Commands.ParameterType.Required)
|
||||
// .Do(async e =>
|
||||
// {
|
||||
// if (!NadekoBot.IsOwner(e.User.Id)) return;
|
||||
// if (bound != null) return;
|
||||
// try
|
||||
// {
|
||||
// bound = e.Channel;
|
||||
// board = new Board(e.GetArg("board_id").Trim());
|
||||
// board.Refresh();
|
||||
// await imsg.Channel.SendMessageAsync("Successfully bound to this channel and board " + board.Name);
|
||||
// t.Start();
|
||||
// }
|
||||
// catch (Exception ex)
|
||||
// {
|
||||
// Console.WriteLine("Failed to join the board. " + ex.ToString());
|
||||
// }
|
||||
// });
|
||||
|
||||
// cgb.CreateCommand(Prefix + "unbind")
|
||||
// .Description($"Unbinds a bot from the channel and board. **Bot Owner Only!**| `{Prefix}unbind`")
|
||||
// .Do(async e =>
|
||||
// {
|
||||
// if (!NadekoBot.IsOwner(e.User.Id)) return;
|
||||
// if (bound == null || bound != e.Channel) return;
|
||||
// t.Stop();
|
||||
// bound = null;
|
||||
// board = null;
|
||||
// await imsg.Channel.SendMessageAsync("Successfully unbound trello from this channel.").ConfigureAwait(false);
|
||||
|
||||
// });
|
||||
|
||||
// cgb.CreateCommand(Prefix + "lists")
|
||||
// .Alias(Prefix + "list")
|
||||
// .Description($"Lists all lists, yo ;) **Bot Owner Only!**| `{Prefix}list`")
|
||||
// .Do(async e =>
|
||||
// {
|
||||
// if (!NadekoBot.IsOwner(e.User.Id)) return;
|
||||
// if (bound == null || board == null || bound != e.Channel) return;
|
||||
// await imsg.Channel.SendMessageAsync("Lists for a board '" + board.Name + "'\n" + string.Join("\n", board.Lists.Select(l => "**• " + l.ToString() + "**")))
|
||||
// .ConfigureAwait(false);
|
||||
// });
|
||||
|
||||
// cgb.CreateCommand(Prefix + "cards")
|
||||
// .Description($"Lists all cards from the supplied list. You can supply either a name or an index. **Bot Owner Only!**| `{Prefix}cards index`")
|
||||
// .Parameter("list_name", Discord.Commands.ParameterType.Unparsed)
|
||||
// .Do(async e =>
|
||||
// {
|
||||
// if (!NadekoBot.IsOwner(e.User.Id)) return;
|
||||
// if (bound == null || board == null || bound != e.Channel || e.GetArg("list_name") == null) return;
|
||||
|
||||
// int num;
|
||||
// var success = int.TryParse(e.GetArg("list_name"), out num);
|
||||
// List list = null;
|
||||
// if (success && num <= board.Lists.Count() && num > 0)
|
||||
// list = board.Lists[num - 1];
|
||||
// else
|
||||
// list = board.Lists.FirstOrDefault(l => l.Name == e.GetArg("list_name"));
|
||||
|
||||
|
||||
// if (list != null)
|
||||
// await imsg.Channel.SendMessageAsync("There are " + list.Cards.Count() + " cards in a **" + list.Name + "** list\n" + string.Join("\n", list.Cards.Select(c => "**• " + c.ToString() + "**")))
|
||||
// .ConfigureAwait(false);
|
||||
// else
|
||||
// await imsg.Channel.SendMessageAsync("No such list.")
|
||||
// .ConfigureAwait(false);
|
||||
// });
|
||||
// });
|
||||
// }
|
||||
// }
|
||||
//}
|
@ -1,11 +1,9 @@
|
||||
using Discord;
|
||||
using Discord.Commands;
|
||||
using Discord.WebSocket;
|
||||
using NadekoBot.Modules.Utility;
|
||||
using NadekoBot.Services;
|
||||
using NadekoBot.Services.Impl;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
using System.Threading.Tasks;
|
||||
|
@ -1,5 +1,4 @@
|
||||
using System.Reflection;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
// General Information about an assembly is controlled through the following
|
||||
|
54
src/NadekoBot/Resources/CommandStrings.Designer.cs
generated
54
src/NadekoBot/Resources/CommandStrings.Designer.cs
generated
@ -2759,6 +2759,33 @@ namespace NadekoBot.Resources {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Sends a readme and a guide links to the channel..
|
||||
/// </summary>
|
||||
public static string guide_desc {
|
||||
get {
|
||||
return ResourceManager.GetString("guide_desc", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to `-readme` or `-guide`.
|
||||
/// </summary>
|
||||
public static string guide_summary {
|
||||
get {
|
||||
return ResourceManager.GetString("guide_summary", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to readme.
|
||||
/// </summary>
|
||||
public static string guide_text {
|
||||
get {
|
||||
return ResourceManager.GetString("guide_text", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Either shows a help for a single command, or PMs you help link if no arguments are specified..
|
||||
/// </summary>
|
||||
@ -4892,33 +4919,6 @@ namespace NadekoBot.Resources {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Sends a readme and a guide links to the channel..
|
||||
/// </summary>
|
||||
public static string readme_desc {
|
||||
get {
|
||||
return ResourceManager.GetString("readme_desc", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to `-readme` or `-guide`.
|
||||
/// </summary>
|
||||
public static string readme_summary {
|
||||
get {
|
||||
return ResourceManager.GetString("readme_summary", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to readme.
|
||||
/// </summary>
|
||||
public static string readme_text {
|
||||
get {
|
||||
return ResourceManager.GetString("readme_text", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Sends a message to you or a channel after certain amount of time. First argument is me/here/'channelname'. Second argument is time in a descending order (mo>w>d>h>m) example: 1w5d3h10m. Third argument is a (multiword)message..
|
||||
/// </summary>
|
||||
|
@ -135,15 +135,6 @@
|
||||
<data name="hgit_summary" xml:space="preserve">
|
||||
<value>`-hgit`</value>
|
||||
</data>
|
||||
<data name="readme_text" xml:space="preserve">
|
||||
<value>readme</value>
|
||||
</data>
|
||||
<data name="readme_desc" xml:space="preserve">
|
||||
<value>Sends a readme and a guide links to the channel.</value>
|
||||
</data>
|
||||
<data name="readme_summary" xml:space="preserve">
|
||||
<value>`-readme` or `-guide`</value>
|
||||
</data>
|
||||
<data name="donate_text" xml:space="preserve">
|
||||
<value>donate</value>
|
||||
</data>
|
||||
@ -2619,4 +2610,13 @@
|
||||
<data name="cards_summary" xml:space="preserve">
|
||||
<value>`trello cards index`</value>
|
||||
</data>
|
||||
<data name="guide_desc" xml:space="preserve">
|
||||
<value>Sends a readme and a guide links to the channel.</value>
|
||||
</data>
|
||||
<data name="guide_summary" xml:space="preserve">
|
||||
<value>`-readme` or `-guide`</value>
|
||||
</data>
|
||||
<data name="guide_text" xml:space="preserve">
|
||||
<value>readme</value>
|
||||
</data>
|
||||
</root>
|
@ -1,8 +1,4 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace NadekoBot.Services
|
||||
{
|
||||
|
@ -1,14 +1,10 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace NadekoBot.Services
|
||||
namespace NadekoBot.Services
|
||||
{
|
||||
public interface IBotCredentials
|
||||
{
|
||||
string ClientId { get; }
|
||||
string Token { get; }
|
||||
string GoogleApiKey { get; }
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -1,10 +1,4 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace NadekoBot.Services
|
||||
namespace NadekoBot.Services
|
||||
{
|
||||
public interface ILocalization
|
||||
{
|
||||
|
@ -1,6 +1,4 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Collections.Generic;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace NadekoBot.Services
|
||||
|
@ -1,7 +1,4 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Collections.Generic;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace NadekoBot.Services.Impl
|
||||
|
@ -1,20 +1,19 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace NadekoBot.Services.Impl
|
||||
{
|
||||
public class BotCredentials : IBotCredentials
|
||||
{
|
||||
public string ClientId { get; }
|
||||
|
||||
public string GoogleApiKey {
|
||||
get {
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
}
|
||||
|
||||
public IEnumerable<string> MashapeKey { get; internal set; }
|
||||
public IEnumerable<string> MashapeKey { get; }
|
||||
|
||||
public string Token {
|
||||
get {
|
||||
|
@ -1,9 +1,4 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Resources;
|
||||
|
||||
namespace NadekoBot.Services
|
||||
{
|
||||
|
@ -1,7 +1,6 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using Google.Apis.YouTube.v3;
|
||||
using Google.Apis.Services;
|
||||
|
@ -50,15 +50,20 @@ namespace NadekoBot.Extensions
|
||||
return list.ToArray();
|
||||
}
|
||||
|
||||
public static Task<IMessage> SendTableAsync<T>(this IMessageChannel ch, IEnumerable<T> items, Func<T, string> howToPrint, int columns = 3)
|
||||
public static Task<IMessage> SendTableAsync<T>(this IMessageChannel ch, string seed, IEnumerable<T> items, Func<T, string> howToPrint, int columns = 3)
|
||||
{
|
||||
var i = 0;
|
||||
return ch.SendMessageAsync($@"```xl
|
||||
return ch.SendMessageAsync($@"{seed}```xl
|
||||
{string.Join("\n", items.GroupBy(item => (i++) / columns)
|
||||
.Select(ig => string.Concat(ig.Select(el => howToPrint(el)))))}
|
||||
```");
|
||||
}
|
||||
|
||||
public static Task<IMessage> SendTableAsync<T>(this IMessageChannel ch, IEnumerable<T> items, Func<T, string> howToPrint, int columns = 3)
|
||||
{
|
||||
return ch.SendTableAsync("", items, howToPrint, columns);
|
||||
}
|
||||
|
||||
public static async Task<string> ShortenUrl(this string url)
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(NadekoBot.Credentials.GoogleApiKey)) return url;
|
||||
|
@ -1,127 +0,0 @@
|
||||
using Discord.Commands;
|
||||
using NadekoBot.Extensions;
|
||||
using NadekoBot.Modules;
|
||||
using NadekoBot.Modules.Permissions.Classes;
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text.RegularExpressions;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace NadekoBot.Classes.Help.Commands
|
||||
{
|
||||
internal class HelpCommand : DiscordCommand
|
||||
{
|
||||
public Func<CommandEventArgs, Task> HelpFunc() => async e =>
|
||||
{
|
||||
var comToFind = e.GetArg("command")?.ToLowerInvariant();
|
||||
if (string.IsNullOrWhiteSpace(comToFind))
|
||||
{
|
||||
await e.User.Send(HelpString).ConfigureAwait(false);
|
||||
return;
|
||||
}
|
||||
await Task.Run(async () =>
|
||||
{
|
||||
var com = NadekoBot.Client.GetService<CommandService>().AllCommands
|
||||
.FirstOrDefault(c => c.Text.ToLowerInvariant().Equals(comToFind) ||
|
||||
c.Aliases.Select(a => a.ToLowerInvariant()).Contains(comToFind));
|
||||
|
||||
var str = "";
|
||||
var alias = com.Aliases.FirstOrDefault();
|
||||
if (alias != null)
|
||||
str = $" / `{ com.Aliases.FirstOrDefault()}`";
|
||||
if (com != null)
|
||||
await imsg.Channel.SendMessageAsync($@"**__Help for:__ `{com.Text}`**" + str + $"\n**Desc:** {new Regex(@"\|").Replace(com.Description, "\n**Usage:**", 1)}").ConfigureAwait(false);
|
||||
}).ConfigureAwait(false);
|
||||
};
|
||||
public static string HelpString {
|
||||
get {
|
||||
var str = !string.IsNullOrWhiteSpace(NadekoBot.Creds.ClientId) && !NadekoBot.Config.DontJoinServers
|
||||
? String.Format("To add me to your server, use this link -> <https://discordapp.com/oauth2/authorize?client_id={0}&scope=bot&permissions=66186303>\n", NadekoBot.Creds.ClientId)
|
||||
: "";
|
||||
return str + String.Format(NadekoBot.Config.HelpString, NadekoBot.Config.CommandPrefixes.Help);
|
||||
}
|
||||
}
|
||||
|
||||
public static string DMHelpString => NadekoBot.Config.DMHelpString;
|
||||
|
||||
public Action<CommandEventArgs> DoGitFunc() => e =>
|
||||
{
|
||||
string helpstr =
|
||||
$@"######For more information and how to setup your own NadekoBot, go to: <http://github.com/Kwoth/NadekoBot/wiki>
|
||||
######You can donate on patreon: <https://patreon.com/nadekobot>
|
||||
######or paypal: `nadekodiscordbot@gmail.com`
|
||||
|
||||
#NadekoBot List Of Commands ";
|
||||
|
||||
|
||||
string lastCategory = "";
|
||||
foreach (var com in NadekoBot.Client.GetService<CommandService>().AllCommands)
|
||||
{
|
||||
if (com.Category != lastCategory)
|
||||
{
|
||||
helpstr += "\n### " + com.Category + " \n";
|
||||
helpstr += "Command and aliases | Description | Usage\n";
|
||||
helpstr += "----------------|--------------|-------\n";
|
||||
lastCategory = com.Category;
|
||||
}
|
||||
helpstr += PrintCommandHelp(com);
|
||||
}
|
||||
helpstr = helpstr.Replace(NadekoBot.BotMention, "@BotName");
|
||||
helpstr = helpstr.Replace(" |", " | ").Replace("**Usage**:", " | ").Replace("**Description:**", " | ").Replace("\n|", " | \n");
|
||||
#if DEBUG
|
||||
File.WriteAllText("../../../commandlist.md", helpstr);
|
||||
#else
|
||||
File.WriteAllText("commandlist.md", helpstr);
|
||||
#endif
|
||||
};
|
||||
|
||||
internal override void Init(CommandGroupBuilder cgb)
|
||||
{
|
||||
cgb.CreateCommand(Module.Prefix + "h")
|
||||
.Alias(Module.Prefix + "help", NadekoBot.BotMention + " help", NadekoBot.BotMention + " h", "~h")
|
||||
.Description($"Either shows a help for a single command, or PMs you help link if no arguments are specified. | `{Prefix}h !m q` or just `{Prefix}h` ")
|
||||
.Parameter("command", ParameterType.Unparsed)
|
||||
.Do(HelpFunc());
|
||||
cgb.CreateCommand(Module.Prefix + "hgit")
|
||||
.Description($"Generates the commandlist.md file. **Bot Owner Only!** | `{Prefix}hgit`")
|
||||
.AddCheck(SimpleCheckers.OwnerOnly())
|
||||
.Do(DoGitFunc());
|
||||
cgb.CreateCommand(Module.Prefix + "readme")
|
||||
.Alias(Module.Prefix + "guide")
|
||||
.Description($"Sends a readme and a guide links to the channel. | `{Prefix}readme` or `{Prefix}guide`")
|
||||
.Do(async e =>
|
||||
await imsg.Channel.SendMessageAsync(
|
||||
@"**Wiki with all info**: <https://github.com/Kwoth/NadekoBot/wiki>
|
||||
|
||||
**WINDOWS SETUP GUIDE**: <https://github.com/Kwoth/NadekoBot/blob/master/ComprehensiveGuide.md>
|
||||
|
||||
**LINUX SETUP GUIDE**: <https://github.com/Kwoth/NadekoBot/blob/master/LinuxSetup.md>
|
||||
|
||||
**LIST OF COMMANDS**: <https://github.com/Kwoth/NadekoBot/blob/master/commandlist.md>").ConfigureAwait(false));
|
||||
|
||||
cgb.CreateCommand(Module.Prefix + "donate")
|
||||
.Alias("~donate")
|
||||
.Description($"Instructions for helping the project! | `{Prefix}donate` or `~donate`")
|
||||
.Do(async e =>
|
||||
{
|
||||
await imsg.Channel.SendMessageAsync(
|
||||
$@"You can support the project on patreon. <https://patreon.com/nadekobot> or
|
||||
You can send donations to `nadekodiscordbot@gmail.com`
|
||||
Don't forget to leave your discord name or id in the message.
|
||||
|
||||
**Thank you** ♥️").ConfigureAwait(false);
|
||||
});
|
||||
}
|
||||
|
||||
private static string PrintCommandHelp(Command com)
|
||||
{
|
||||
var str = "`" + com.Text + "`";
|
||||
str = com.Aliases.Aggregate(str, (current, a) => current + (", `" + a + "`"));
|
||||
str += " **Description:** " + com.Description + "\n";
|
||||
return str;
|
||||
}
|
||||
|
||||
public HelpCommand(DiscordModule module) : base(module) { }
|
||||
}
|
||||
}
|
@ -1,73 +0,0 @@
|
||||
using Discord.Commands;
|
||||
using Discord.Modules;
|
||||
using NadekoBot.Classes;
|
||||
using NadekoBot.Classes.Help.Commands;
|
||||
using NadekoBot.Extensions;
|
||||
using NadekoBot.Modules.Permissions.Classes;
|
||||
using System.Linq;
|
||||
|
||||
namespace NadekoBot.Modules.Help
|
||||
{
|
||||
internal class HelpModule : DiscordModule
|
||||
{
|
||||
|
||||
public HelpModule()
|
||||
{
|
||||
commands.Add(new HelpCommand(this));
|
||||
}
|
||||
|
||||
public override string Prefix { get; } = NadekoBot.Config.CommandPrefixes.Help;
|
||||
|
||||
|
||||
|
||||
public override void Install(ModuleManager manager)
|
||||
{
|
||||
manager.CreateCommands("", cgb =>
|
||||
{
|
||||
cgb.AddCheck(PermissionChecker.Instance);
|
||||
commands.ForEach(com => com.Init(cgb));
|
||||
|
||||
cgb.CreateCommand(Prefix + "modules")
|
||||
.Alias(".modules")
|
||||
.Description($"List all bot modules. | `{Prefix}modules` or `.modules`")
|
||||
.Do(async e =>
|
||||
{
|
||||
await imsg.Channel.SendMessageAsync("`List of modules:` \n• " + string.Join("\n• ", NadekoBot.Client.GetService<ModuleService>().Modules.Select(m => m.Name)) + $"\n`Type \"{Prefix}commands module_name\" to get a list of commands in that module.`")
|
||||
.ConfigureAwait(false);
|
||||
});
|
||||
|
||||
cgb.CreateCommand(Prefix + "commands")
|
||||
.Alias(".commands")
|
||||
.Description($"List all of the bot's commands from a certain module. | `{Prefix}commands` or `.commands`")
|
||||
.Parameter("module", ParameterType.Unparsed)
|
||||
.Do(async e =>
|
||||
{
|
||||
var module = e.GetArg("module")?.Trim().ToLower();
|
||||
if (string.IsNullOrWhiteSpace(module))
|
||||
return;
|
||||
var cmds = NadekoBot.Client.GetService<CommandService>().AllCommands
|
||||
.Where(c => c.Category.ToLower() == module)
|
||||
.OrderBy(c=>c.Text)
|
||||
.AsEnumerable();
|
||||
var cmdsArray = cmds as Command[] ?? cmds.ToArray();
|
||||
if (!cmdsArray.Any())
|
||||
{
|
||||
await imsg.Channel.SendMessageAsync("That module does not exist.").ConfigureAwait(false);
|
||||
return;
|
||||
}
|
||||
if (module != "customreactions" && module != "conversations")
|
||||
{
|
||||
await imsg.Channel.SendMessageAsync("`List Of Commands:`\n" + SearchHelper.ShowInPrettyCode<Command>(cmdsArray,
|
||||
el => $"{el.Text,-15}{"[" + el.Aliases.FirstOrDefault() + "]",-8}"))
|
||||
.ConfigureAwait(false);
|
||||
}
|
||||
else
|
||||
{
|
||||
await imsg.Channel.SendMessageAsync("`List Of Commands:`\n• " + string.Join("\n• ", cmdsArray.Select(c => $"{c.Text}")));
|
||||
}
|
||||
await imsg.Channel.SendMessageAsync($"`You can type \"{Prefix}h command_name\" to see the help about that specific command.`").ConfigureAwait(false);
|
||||
});
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
@ -1,145 +0,0 @@
|
||||
using Discord.Modules;
|
||||
using Manatee.Trello;
|
||||
using Manatee.Trello.ManateeJson;
|
||||
using NadekoBot.Extensions;
|
||||
using NadekoBot.Modules.Permissions.Classes;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Timers;
|
||||
using Action = Manatee.Trello.Action;
|
||||
|
||||
namespace NadekoBot.Modules.Trello
|
||||
{
|
||||
internal class TrelloModule : DiscordModule
|
||||
{
|
||||
private readonly Timer t = new Timer { Interval = 2000 };
|
||||
public override string Prefix { get; } = NadekoBot.Config.CommandPrefixes.Trello;
|
||||
|
||||
public override void Install(ModuleManager manager)
|
||||
{
|
||||
|
||||
var client = manager.Client;
|
||||
|
||||
var serializer = new ManateeSerializer();
|
||||
TrelloConfiguration.Serializer = serializer;
|
||||
TrelloConfiguration.Deserializer = serializer;
|
||||
TrelloConfiguration.JsonFactory = new ManateeFactory();
|
||||
TrelloConfiguration.RestClientProvider = new Manatee.Trello.WebApi.WebApiClientProvider();
|
||||
TrelloAuthorization.Default.AppKey = NadekoBot.Creds.TrelloAppKey;
|
||||
//TrelloAuthorization.Default.UserToken = "[your user token]";
|
||||
|
||||
Discord.Channel bound = null;
|
||||
Board board = null;
|
||||
|
||||
List<string> last5ActionIDs = null;
|
||||
t.Elapsed += async (s, e) =>
|
||||
{
|
||||
try
|
||||
{
|
||||
if (board == null || bound == null)
|
||||
return; //do nothing if there is no bound board
|
||||
|
||||
board.Refresh();
|
||||
var cur5Actions = board.Actions.Take(board.Actions.Count() < 5 ? board.Actions.Count() : 5);
|
||||
var cur5ActionsArray = cur5Actions as Action[] ?? cur5Actions.ToArray();
|
||||
|
||||
if (last5ActionIDs == null)
|
||||
{
|
||||
last5ActionIDs = cur5ActionsArray.Select(a => a.Id).ToList();
|
||||
return;
|
||||
}
|
||||
|
||||
foreach (var a in cur5ActionsArray.Where(ca => !last5ActionIDs.Contains(ca.Id)))
|
||||
{
|
||||
await bound.Send("**--TRELLO NOTIFICATION--**\n" + a.ToString()).ConfigureAwait(false);
|
||||
}
|
||||
last5ActionIDs.Clear();
|
||||
last5ActionIDs.AddRange(cur5ActionsArray.Select(a => a.Id));
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Console.WriteLine("Timer failed " + ex.ToString());
|
||||
}
|
||||
};
|
||||
|
||||
manager.CreateCommands("", cgb =>
|
||||
{
|
||||
|
||||
cgb.AddCheck(PermissionChecker.Instance);
|
||||
|
||||
cgb.CreateCommand(Prefix + "bind")
|
||||
.Description("Bind a trello bot to a single channel. " +
|
||||
"You will receive notifications from your board when something is added or edited." +
|
||||
$" **Bot Owner Only!**| `{Prefix}bind [board_id]`")
|
||||
.Parameter("board_id", Discord.Commands.ParameterType.Required)
|
||||
.Do(async e =>
|
||||
{
|
||||
if (!NadekoBot.IsOwner(e.User.Id)) return;
|
||||
if (bound != null) return;
|
||||
try
|
||||
{
|
||||
bound = e.Channel;
|
||||
board = new Board(e.GetArg("board_id").Trim());
|
||||
board.Refresh();
|
||||
await imsg.Channel.SendMessageAsync("Successfully bound to this channel and board " + board.Name);
|
||||
t.Start();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Console.WriteLine("Failed to join the board. " + ex.ToString());
|
||||
}
|
||||
});
|
||||
|
||||
cgb.CreateCommand(Prefix + "unbind")
|
||||
.Description($"Unbinds a bot from the channel and board. **Bot Owner Only!**| `{Prefix}unbind`")
|
||||
.Do(async e =>
|
||||
{
|
||||
if (!NadekoBot.IsOwner(e.User.Id)) return;
|
||||
if (bound == null || bound != e.Channel) return;
|
||||
t.Stop();
|
||||
bound = null;
|
||||
board = null;
|
||||
await imsg.Channel.SendMessageAsync("Successfully unbound trello from this channel.").ConfigureAwait(false);
|
||||
|
||||
});
|
||||
|
||||
cgb.CreateCommand(Prefix + "lists")
|
||||
.Alias(Prefix + "list")
|
||||
.Description($"Lists all lists, yo ;) **Bot Owner Only!**| `{Prefix}list`")
|
||||
.Do(async e =>
|
||||
{
|
||||
if (!NadekoBot.IsOwner(e.User.Id)) return;
|
||||
if (bound == null || board == null || bound != e.Channel) return;
|
||||
await imsg.Channel.SendMessageAsync("Lists for a board '" + board.Name + "'\n" + string.Join("\n", board.Lists.Select(l => "**• " + l.ToString() + "**")))
|
||||
.ConfigureAwait(false);
|
||||
});
|
||||
|
||||
cgb.CreateCommand(Prefix + "cards")
|
||||
.Description($"Lists all cards from the supplied list. You can supply either a name or an index. **Bot Owner Only!**| `{Prefix}cards index`")
|
||||
.Parameter("list_name", Discord.Commands.ParameterType.Unparsed)
|
||||
.Do(async e =>
|
||||
{
|
||||
if (!NadekoBot.IsOwner(e.User.Id)) return;
|
||||
if (bound == null || board == null || bound != e.Channel || e.GetArg("list_name") == null) return;
|
||||
|
||||
int num;
|
||||
var success = int.TryParse(e.GetArg("list_name"), out num);
|
||||
List list = null;
|
||||
if (success && num <= board.Lists.Count() && num > 0)
|
||||
list = board.Lists[num - 1];
|
||||
else
|
||||
list = board.Lists.FirstOrDefault(l => l.Name == e.GetArg("list_name"));
|
||||
|
||||
|
||||
if (list != null)
|
||||
await imsg.Channel.SendMessageAsync("There are " + list.Cards.Count() + " cards in a **" + list.Name + "** list\n" + string.Join("\n", list.Cards.Select(c => "**• " + c.ToString() + "**")))
|
||||
.ConfigureAwait(false);
|
||||
else
|
||||
await imsg.Channel.SendMessageAsync("No such list.")
|
||||
.ConfigureAwait(false);
|
||||
});
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
Binary file not shown.
Binary file not shown.
@ -1,8 +0,0 @@
|
||||
<?xml version="1.0"?>
|
||||
<doc>
|
||||
<assembly>
|
||||
<name>Discord.Net.Commands</name>
|
||||
</assembly>
|
||||
<members>
|
||||
</members>
|
||||
</doc>
|
Binary file not shown.
Binary file not shown.
File diff suppressed because it is too large
Load Diff
@ -1,163 +0,0 @@
|
||||
{
|
||||
"runtimeTarget": {
|
||||
"name": ".NETCoreApp,Version=v1.0",
|
||||
"signature": "52eb77cc5a8d5f8cf4a40bc5cbf2392e380f956a"
|
||||
},
|
||||
"compilationOptions": {},
|
||||
"targets": {
|
||||
".NETCoreApp,Version=v1.0": {
|
||||
"NadekoBot/1.0.0": {
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.DependencyInjection.Abstractions": "1.0.0",
|
||||
"Microsoft.Extensions.PlatformAbstractions": "1.0.0",
|
||||
"Newtonsoft.Json": "9.0.1",
|
||||
"Microsoft.Extensions.DependencyInjection": "1.0.0",
|
||||
"Discord.Net": "1.0.0-dev",
|
||||
"Discord.Net.Commands": "1.0.0-dev",
|
||||
"System.Resources.ResourceWriter": "4.0.0-beta-22816"
|
||||
},
|
||||
"runtime": {
|
||||
"NadekoBot.dll": {}
|
||||
}
|
||||
},
|
||||
"Microsoft.Extensions.DependencyInjection/1.0.0": {
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.DependencyInjection.Abstractions": "1.0.0"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/netstandard1.1/Microsoft.Extensions.DependencyInjection.dll": {}
|
||||
}
|
||||
},
|
||||
"Microsoft.Extensions.DependencyInjection.Abstractions/1.0.0": {
|
||||
"runtime": {
|
||||
"lib/netstandard1.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll": {}
|
||||
}
|
||||
},
|
||||
"Microsoft.Extensions.PlatformAbstractions/1.0.0": {
|
||||
"runtime": {
|
||||
"lib/netstandard1.3/Microsoft.Extensions.PlatformAbstractions.dll": {}
|
||||
}
|
||||
},
|
||||
"Microsoft.NETCore.Platforms/1.0.2-beta-24410-01": {},
|
||||
"Newtonsoft.Json/9.0.1": {
|
||||
"dependencies": {
|
||||
"System.Runtime.Serialization.Primitives": "4.1.1"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/netstandard1.0/Newtonsoft.Json.dll": {}
|
||||
}
|
||||
},
|
||||
"System.Net.WebSockets/4.0.0": {
|
||||
"runtime": {
|
||||
"lib/netstandard1.3/System.Net.WebSockets.dll": {}
|
||||
}
|
||||
},
|
||||
"System.Net.WebSockets.Client/4.0.1-beta-24410-01": {
|
||||
"dependencies": {
|
||||
"Microsoft.NETCore.Platforms": "1.0.2-beta-24410-01",
|
||||
"System.Net.WebSockets": "4.0.0"
|
||||
},
|
||||
"runtimeTargets": {
|
||||
"runtimes/unix/lib/netstandard1.3/System.Net.WebSockets.Client.dll": {
|
||||
"rid": "unix",
|
||||
"assetType": "runtime"
|
||||
},
|
||||
"runtimes/win/lib/netstandard1.3/System.Net.WebSockets.Client.dll": {
|
||||
"rid": "win",
|
||||
"assetType": "runtime"
|
||||
}
|
||||
}
|
||||
},
|
||||
"System.Resources.ResourceWriter/4.0.0-beta-22816": {
|
||||
"runtime": {
|
||||
"lib/aspnetcore50/System.Resources.ResourceWriter.dll": {}
|
||||
}
|
||||
},
|
||||
"System.Runtime.Serialization.Primitives/4.1.1": {
|
||||
"runtime": {
|
||||
"lib/netstandard1.3/System.Runtime.Serialization.Primitives.dll": {}
|
||||
}
|
||||
},
|
||||
"Discord.Net/1.0.0-dev": {
|
||||
"dependencies": {
|
||||
"Newtonsoft.Json": "9.0.1",
|
||||
"System.Net.WebSockets.Client": "4.0.1-beta-24410-01",
|
||||
"System.Runtime.Serialization.Primitives": "4.1.1"
|
||||
},
|
||||
"runtime": {
|
||||
"Discord.Net.dll": {}
|
||||
}
|
||||
},
|
||||
"Discord.Net.Commands/1.0.0-dev": {
|
||||
"dependencies": {
|
||||
"Discord.Net": "1.0.0-dev"
|
||||
},
|
||||
"runtime": {
|
||||
"Discord.Net.Commands.dll": {}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"libraries": {
|
||||
"NadekoBot/1.0.0": {
|
||||
"type": "project",
|
||||
"serviceable": false,
|
||||
"sha512": ""
|
||||
},
|
||||
"Microsoft.Extensions.DependencyInjection/1.0.0": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-zdtkiZNV6LB8xtpmfyUjP/9N9ZCL/ydQ+0bfjun38fbrk+MDEm9M2yeLzRdq+OIt5xExw/KU04wFaVwJ1bhQPg=="
|
||||
},
|
||||
"Microsoft.Extensions.DependencyInjection.Abstractions/1.0.0": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-+XwaNo3o9RhLQhUnnOBCaukeRi1X9yYc0Fzye9RlErSflKZdw0VgHtn6rvKo0FTionsW0x8QVULhKH+nkqVjQA=="
|
||||
},
|
||||
"Microsoft.Extensions.PlatformAbstractions/1.0.0": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-zyjUzrOmuevOAJpIo3Mt5GmpALVYCVdLZ99keMbmCxxgQH7oxzU58kGHzE6hAgYEiWsdfMJLjVR7r+vSmaJmtg=="
|
||||
},
|
||||
"Microsoft.NETCore.Platforms/1.0.2-beta-24410-01": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-uc/pGYdE4sVy3OovFF8hg79MvCxptzICxn0jdA6WusGWZa7VieqFoZYc+a6bHUVhMI0s/7SfBriux0RUq+PpbA=="
|
||||
},
|
||||
"Newtonsoft.Json/9.0.1": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-U82mHQSKaIk+lpSVCbWYKNavmNH1i5xrExDEquU1i6I5pV6UMOqRnJRSlKO3cMPfcpp0RgDY+8jUXHdQ4IfXvw=="
|
||||
},
|
||||
"System.Net.WebSockets/4.0.0": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-2KJo8hir6Edi9jnMDAMhiJoI691xRBmKcbNpwjrvpIMOCTYOtBpSsSEGBxBDV7PKbasJNaFp1+PZz1D7xS41Hg=="
|
||||
},
|
||||
"System.Net.WebSockets.Client/4.0.1-beta-24410-01": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-IOqAcR7k+3LwNI6aL7qN61HcCOA9X4MM9LbrZhDeNbeB/IeWTk7zpeb7kh3d7H678s7ndIqN6a7okO8dAAfcYQ=="
|
||||
},
|
||||
"System.Resources.ResourceWriter/4.0.0-beta-22816": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-Q6wpzkZjop1J+WJXl9H0OgXQvxDQxMkqA43AVENNW4SlTzIT8rFW7tum54xYZy3QCMKK8gIfOnVqA6VbgXRq1Q=="
|
||||
},
|
||||
"System.Runtime.Serialization.Primitives/4.1.1": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-HZ6Du5QrTG8MNJbf4e4qMO3JRAkIboGT5Fk804uZtg3Gq516S7hAqTm2UZKUHa7/6HUGdVy3AqMQKbns06G/cg=="
|
||||
},
|
||||
"Discord.Net/1.0.0-dev": {
|
||||
"type": "project",
|
||||
"serviceable": false,
|
||||
"sha512": ""
|
||||
},
|
||||
"Discord.Net.Commands/1.0.0-dev": {
|
||||
"type": "project",
|
||||
"serviceable": false,
|
||||
"sha512": ""
|
||||
}
|
||||
}
|
||||
}
|
Binary file not shown.
Binary file not shown.
@ -1,7 +0,0 @@
|
||||
{
|
||||
"runtimeOptions": {
|
||||
"additionalProbingPaths": [
|
||||
"C:\\Users\\Kwoth\\.nuget\\packages"
|
||||
]
|
||||
}
|
||||
}
|
@ -1,8 +0,0 @@
|
||||
{
|
||||
"runtimeOptions": {
|
||||
"framework": {
|
||||
"name": "Microsoft.NETCore.App",
|
||||
"version": "1.0.0"
|
||||
}
|
||||
}
|
||||
}
|
@ -1,128 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="String1" xml:space="preserve">
|
||||
<value>1</value>
|
||||
<comment>1</comment>
|
||||
</data>
|
||||
<data name="String2" xml:space="preserve">
|
||||
<value>2</value>
|
||||
<comment>3</comment>
|
||||
</data>
|
||||
</root>
|
Loading…
Reference in New Issue
Block a user