Merge remote-tracking branch 'refs/remotes/Kwoth/1.0' into math
This commit is contained in:
commit
1b7927e8da
@ -1 +1 @@
|
|||||||
Subproject commit 06184c1a655232beedd608a8b0190ca2c70b9b23
|
Subproject commit fa06826f92fd020f2af5f48aa25784d10239f668
|
@ -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)
|
||||||
|
@ -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;
|
||||||
|
@ -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++;
|
||||||
}
|
}
|
||||||
|
@ -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);
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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]
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -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);
|
||||||
|
@ -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);
|
||||||
|
@ -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)
|
||||||
|
@ -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;
|
||||||
|
@ -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 = "")
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user