Merge remote-tracking branch 'refs/remotes/Kwoth/1.0' into math

This commit is contained in:
appelemac 2016-08-22 11:56:30 +02:00
commit 1b7927e8da
13 changed files with 41 additions and 42 deletions

@ -1 +1 @@
Subproject commit 06184c1a655232beedd608a8b0190ca2c70b9b23 Subproject commit fa06826f92fd020f2af5f48aa25784d10239f668

View File

@ -23,7 +23,6 @@ namespace NadekoBot.Modules.Administration
{ {
} }
////todo owner only ////todo owner only
//[LocalizedCommand, LocalizedDescription, LocalizedSummary] //[LocalizedCommand, LocalizedDescription, LocalizedSummary]
//[RequireContext(ContextType.Guild)] //[RequireContext(ContextType.Guild)]
@ -445,6 +444,7 @@ namespace NadekoBot.Modules.Administration
public async Task Prune(IMessage msg, int count) public async Task Prune(IMessage msg, int count)
{ {
var channel = msg.Channel as ITextChannel; var channel = msg.Channel as ITextChannel;
await msg.DeleteAsync();
while (count > 0) while (count > 0)
{ {
int limit = (count < 100) ? count : 100; int limit = (count < 100) ? count : 100;
@ -646,7 +646,7 @@ namespace NadekoBot.Modules.Administration
foreach (var role in roles) foreach (var role in roles)
{ {
send += $"\n`{role.Name}`\n"; send += $"\n`{role.Name}`\n";
send += string.Join(", ", (await channel.Guild.GetUsersAsync()).Where(u => u.Roles.Contains(role)).Distinct()); send += string.Join(", ", (await channel.Guild.GetUsersAsync()).Where(u => u.Roles.Contains(role)).Distinct().Select(u=>u.Mention));
} }
while (send.Length > 2000) while (send.Length > 2000)

View File

@ -30,7 +30,7 @@ namespace NadekoBot.Modules.Administration
{ {
var channel = imsg.Channel as ITextChannel; var channel = imsg.Channel as ITextChannel;
if (channel == null || await imsg.IsAuthor(_client)) if (channel == null || await imsg.IsAuthor())
return; return;
ConcurrentDictionary<ulong, DateTime> userTimePair; ConcurrentDictionary<ulong, DateTime> userTimePair;
if (!RatelimitingChannels.TryGetValue(channel.Id, out userTimePair)) return; if (!RatelimitingChannels.TryGetValue(channel.Id, out userTimePair)) return;

View File

@ -196,7 +196,7 @@ namespace NadekoBot.Modules.Gambling
private async Task Client_MessageReceived(IMessage imsg) private async Task Client_MessageReceived(IMessage imsg)
{ {
if (await imsg.IsAuthor(NadekoBot.Client) || !(imsg.Channel is ITextChannel) || imsg.Channel != raceChannel) if (await imsg.IsAuthor() || !(imsg.Channel is ITextChannel) || imsg.Channel != raceChannel)
return; return;
messagesSinceGameStarted++; messagesSinceGameStarted++;
} }

View File

@ -27,7 +27,7 @@ namespace NadekoBot.Modules.Gambling
role = role ?? channel.Guild.EveryoneRole; role = role ?? channel.Guild.EveryoneRole;
var members = (await role.Members()).Where(u => u.Status == UserStatus.Online); var members = role.Members().Where(u => u.Status == UserStatus.Online);
var membersArray = members as IUser[] ?? members.ToArray(); var membersArray = members as IUser[] ?? members.ToArray();
var usr = membersArray[new Random().Next(0, membersArray.Length)]; var usr = membersArray[new Random().Next(0, membersArray.Length)];
await channel.SendMessageAsync($"**Raffled user:** {usr.Username} (id: {usr.Id})").ConfigureAwait(false); await channel.SendMessageAsync($"**Raffled user:** {usr.Username} (id: {usr.Id})").ConfigureAwait(false);

View File

@ -73,8 +73,8 @@ namespace NadekoBot.Modules.Searches
var channel = imsg.Channel as ITextChannel; var channel = imsg.Channel as ITextChannel;
using (var http = new HttpClient()) using (var http = new HttpClient())
{ {
var response = await http.GetStringAsync("http://tambal.azurewebsites.net/joke/random").ConfigureAwait(false); var response = await http.GetStringAsync("http://api.icndb.com/jokes/random/").ConfigureAwait(false);
await channel.SendMessageAsync("`" + JObject.Parse(response)["joke"].ToString() + "` 😆").ConfigureAwait(false); await channel.SendMessageAsync("`" + JObject.Parse(response)["value"]["joke"].ToString() + "` 😆").ConfigureAwait(false);
} }
} }

View File

@ -59,8 +59,7 @@ $@"🌍 **Weather for** 【{obj["target"]}】
await channel.SendMessageAsync("No results found for that query."); await channel.SendMessageAsync("No results found for that query.");
return; return;
} }
var shortUrl = await result.ShortenUrl().ConfigureAwait(false); await channel.SendMessageAsync(result).ConfigureAwait(false);
await channel.SendMessageAsync(shortUrl).ConfigureAwait(false);
} }
[LocalizedCommand, LocalizedDescription, LocalizedSummary] [LocalizedCommand, LocalizedDescription, LocalizedSummary]

View File

@ -36,7 +36,6 @@ namespace NadekoBot
AudioMode = Discord.Audio.AudioMode.Incoming, AudioMode = Discord.Audio.AudioMode.Incoming,
LargeThreshold = 200, LargeThreshold = 200,
LogLevel = LogSeverity.Warning, LogLevel = LogSeverity.Warning,
MessageCacheSize = 10,
}); });
//initialize Services //initialize Services
@ -105,7 +104,7 @@ namespace NadekoBot
} }
else if (!t.IsSuccess && t.Error != CommandError.UnknownCommand) else if (!t.IsSuccess && t.Error != CommandError.UnknownCommand)
{ {
_log.Warn("Command errored!\n\tFull Message: {0}\n\tError:{1}", imsg.Content, t.Error); _log.Warn("Command errored!\n\tFull Message: {0}\n\tError:{1}", imsg.Content, t.ErrorReason);
} }
}); });

View File

@ -10,7 +10,7 @@ namespace NadekoBot.Services
string Token { get; } string Token { get; }
string GoogleApiKey { get; } string GoogleApiKey { get; }
ulong[] OwnerIds { get; } ulong[] OwnerIds { get; }
IEnumerable<string> MashapeKey { get; } string MashapeKey { get; }
string LoLApiKey { get; } string LoLApiKey { get; }
bool IsOwner(IUser u); bool IsOwner(IUser u);

View File

@ -17,7 +17,7 @@ namespace NadekoBot.Services.Impl
public string GoogleApiKey { get; } public string GoogleApiKey { get; }
public IEnumerable<string> MashapeKey { get; } public string MashapeKey { get; }
public string Token { get; } public string Token { get; }
@ -35,6 +35,8 @@ namespace NadekoBot.Services.Impl
Token = cm.Token; Token = cm.Token;
OwnerIds = cm.OwnerIds; OwnerIds = cm.OwnerIds;
LoLApiKey = cm.LoLApiKey; LoLApiKey = cm.LoLApiKey;
GoogleApiKey = cm.GoogleApiKey;
MashapeKey = cm.MashapeKey;
} }
else else
_log.Fatal("credentials.json is missing. Failed to start."); _log.Fatal("credentials.json is missing. Failed to start.");
@ -44,6 +46,8 @@ namespace NadekoBot.Services.Impl
public string Token { get; set; } public string Token { get; set; }
public ulong[] OwnerIds { get; set; } public ulong[] OwnerIds { get; set; }
public string LoLApiKey { get; set; } public string LoLApiKey { get; set; }
public string GoogleApiKey { get; set; }
public string MashapeKey { get; set; }
} }
public bool IsOwner(IUser u) => OwnerIds.Contains(u.Id); public bool IsOwner(IUser u) => OwnerIds.Contains(u.Id);

View File

@ -4,27 +4,12 @@ namespace NadekoBot.Services
{ {
public class Localization : ILocalization public class Localization : ILocalization
{ {
public string this[string key] { public string this[string key] => LoadCommandString(key);
get {
try
{
return Resources.ResponseStrings.ResourceManager.GetString(key);
}
catch (Exception) {
return key;
}
}
}
public static string LoadCommandString(string key) public static string LoadCommandString(string key)
{ {
try string toReturn = Resources.CommandStrings.ResourceManager.GetString(key);
{ return string.IsNullOrWhiteSpace(toReturn) ? key : toReturn;
return Resources.CommandStrings.ResourceManager.GetString(key);
}
catch (Exception) {
return key;
}
} }
//private static string GetCommandString(string key) //private static string GetCommandString(string key)

View File

@ -22,8 +22,14 @@ namespace NadekoBot.Services.Impl
} }
public async Task<IEnumerable<string>> FindPlaylistIdsByKeywordsAsync(string keywords, int count = 1) public async Task<IEnumerable<string>> FindPlaylistIdsByKeywordsAsync(string keywords, int count = 1)
{ {
Contract.Requires<ArgumentNullException>(!string.IsNullOrWhiteSpace(keywords)); //Contract.Requires<ArgumentNullException>(!string.IsNullOrWhiteSpace(keywords));
Contract.Requires<ArgumentOutOfRangeException>(count > 0); //Contract.Requires<ArgumentOutOfRangeException>(count > 0);
if (string.IsNullOrWhiteSpace(keywords))
throw new ArgumentNullException(nameof(keywords));
if (count <= 0)
throw new ArgumentOutOfRangeException(nameof(count));
var match = new Regex("(?:youtu\\.be\\/|list=)(?<id>[\\da-zA-Z\\-_]*)").Match(keywords); var match = new Regex("(?:youtu\\.be\\/|list=)(?<id>[\\da-zA-Z\\-_]*)").Match(keywords);
if (match.Length > 1) if (match.Length > 1)
@ -39,8 +45,11 @@ namespace NadekoBot.Services.Impl
public async Task<IEnumerable<string>> FindRelatedVideosAsync(string id, int count = 1) public async Task<IEnumerable<string>> FindRelatedVideosAsync(string id, int count = 1)
{ {
Contract.Requires<ArgumentNullException>(!string.IsNullOrWhiteSpace(id)); if (string.IsNullOrWhiteSpace(id))
Contract.Requires<ArgumentOutOfRangeException>(count > 0); throw new ArgumentNullException(nameof(id));
if (count <= 0)
throw new ArgumentOutOfRangeException(nameof(count));
var match = new Regex("(?:youtu\\.be\\/|v=)(?<id>[\\da-zA-Z\\-_]*)").Match(id); var match = new Regex("(?:youtu\\.be\\/|v=)(?<id>[\\da-zA-Z\\-_]*)").Match(id);
if (match.Length > 1) if (match.Length > 1)
@ -56,8 +65,11 @@ namespace NadekoBot.Services.Impl
public async Task<IEnumerable<string>> FindVideosByKeywordsAsync(string keywords, int count = 1) public async Task<IEnumerable<string>> FindVideosByKeywordsAsync(string keywords, int count = 1)
{ {
Contract.Requires<ArgumentNullException>(!string.IsNullOrWhiteSpace(keywords)); if (string.IsNullOrWhiteSpace(keywords))
Contract.Requires<ArgumentOutOfRangeException>(count > 0); throw new ArgumentNullException(nameof(keywords));
if (count <= 0)
throw new ArgumentOutOfRangeException(nameof(count));
var query = yt.Search.List("snippet"); var query = yt.Search.List("snippet");
query.MaxResults = count; query.MaxResults = count;

View File

@ -26,11 +26,11 @@ namespace NadekoBot.Extensions
public static async Task<IMessage> Reply(this IMessage msg, string content) => public static async Task<IMessage> Reply(this IMessage msg, string content) =>
await msg.Channel.SendMessageAsync(content).ConfigureAwait(false); await msg.Channel.SendMessageAsync(content).ConfigureAwait(false);
public static Task<bool> IsAuthor(this IMessage msg, DiscordSocketClient client) => public static Task<bool> IsAuthor(this IMessage msg) =>
Task.FromResult(client.GetCurrentUser().Id == msg.Author.Id); Task.FromResult(NadekoBot.Client.GetCurrentUser().Id == msg.Author.Id);
public static async Task<IEnumerable<IUser>> Members(this IRole role) => public static IEnumerable<IUser> Members(this IRole role) =>
await role.Members(); NadekoBot.Client.GetGuilds().Where(g => g.Id == role.GuildId).FirstOrDefault()?.GetUsers().Where(u => u.Roles.Contains(role)) ?? Enumerable.Empty<IUser>();
public static async Task<IMessage[]> ReplyLong(this IMessage msg, string content, string breakOn = "\n", string addToEnd = "", string addToStart = "") public static async Task<IMessage[]> ReplyLong(this IMessage msg, string content, string breakOn = "\n", string addToEnd = "", string addToStart = "")
{ {