Merge pull request #23 from Kwoth/dev

Dev
This commit is contained in:
miraai 2016-08-04 11:11:14 +02:00 committed by GitHub
commit 798dfaa6cd
13 changed files with 87 additions and 76 deletions

View File

@ -10,7 +10,7 @@ namespace NadekoBot.Modules.Administration.Commands
{
public AutoAssignRole(DiscordModule module) : base(module)
{
NadekoBot.Client.UserJoined += (s, e) =>
NadekoBot.OnReady += () => NadekoBot.Client.UserJoined += (s, e) =>
{
try
{

View File

@ -13,46 +13,49 @@ namespace NadekoBot.Modules.Administration.Commands
{
public CrossServerTextChannel(DiscordModule module) : base(module)
{
NadekoBot.Client.MessageReceived += async (s, e) =>
NadekoBot.OnReady += () =>
{
try
NadekoBot.Client.MessageReceived += async (s, e) =>
{
if (e.User.Id == NadekoBot.Client.CurrentUser.Id) return;
foreach (var subscriber in Subscribers)
try
{
var set = subscriber.Value;
if (!set.Contains(e.Channel))
continue;
foreach (var chan in set.Except(new[] { e.Channel }))
if (e.User.Id == NadekoBot.Client.CurrentUser.Id) return;
foreach (var subscriber in Subscribers)
{
await chan.SendMessage(GetText(e.Server, e.Channel, e.User, e.Message)).ConfigureAwait(false);
var set = subscriber.Value;
if (!set.Contains(e.Channel))
continue;
foreach (var chan in set.Except(new[] { e.Channel }))
{
await chan.SendMessage(GetText(e.Server, e.Channel, e.User, e.Message)).ConfigureAwait(false);
}
}
}
}
catch { }
};
NadekoBot.Client.MessageUpdated += async (s, e) =>
{
try
catch { }
};
NadekoBot.Client.MessageUpdated += async (s, e) =>
{
if (e.After?.User?.Id == null || e.After.User.Id == NadekoBot.Client.CurrentUser.Id) return;
foreach (var subscriber in Subscribers)
try
{
var set = subscriber.Value;
if (!set.Contains(e.Channel))
continue;
foreach (var chan in set.Except(new[] { e.Channel }))
if (e.After?.User?.Id == null || e.After.User.Id == NadekoBot.Client.CurrentUser.Id) return;
foreach (var subscriber in Subscribers)
{
var msg = chan.Messages
.FirstOrDefault(m =>
m.RawText == GetText(e.Server, e.Channel, e.User, e.Before));
if (msg != default(Message))
await msg.Edit(GetText(e.Server, e.Channel, e.User, e.After)).ConfigureAwait(false);
var set = subscriber.Value;
if (!set.Contains(e.Channel))
continue;
foreach (var chan in set.Except(new[] { e.Channel }))
{
var msg = chan.Messages
.FirstOrDefault(m =>
m.RawText == GetText(e.Server, e.Channel, e.User, e.Before));
if (msg != default(Message))
await msg.Edit(GetText(e.Server, e.Channel, e.User, e.After)).ConfigureAwait(false);
}
}
}
}
catch { }
}
catch { }
};
};
}

View File

@ -19,36 +19,39 @@ namespace NadekoBot.Modules.Administration.Commands
public LogCommand(DiscordModule module) : base(module)
{
NadekoBot.Client.MessageReceived += MsgRecivd;
NadekoBot.Client.MessageDeleted += MsgDltd;
NadekoBot.Client.MessageUpdated += MsgUpdtd;
NadekoBot.Client.UserUpdated += UsrUpdtd;
NadekoBot.Client.UserBanned += UsrBanned;
NadekoBot.Client.UserLeft += UsrLeft;
NadekoBot.Client.UserJoined += UsrJoined;
NadekoBot.Client.UserUnbanned += UsrUnbanned;
NadekoBot.Client.ChannelCreated += ChannelCreated;
NadekoBot.Client.ChannelDestroyed += ChannelDestroyed;
NadekoBot.Client.ChannelUpdated += ChannelUpdated;
NadekoBot.Client.MessageReceived += async (s, e) =>
NadekoBot.OnReady += () =>
{
if (e.Channel.IsPrivate || e.User.Id == NadekoBot.Client.CurrentUser.Id)
return;
if (!SpecificConfigurations.Default.Of(e.Server.Id).SendPrivateMessageOnMention) return;
try
NadekoBot.Client.MessageReceived += MsgRecivd;
NadekoBot.Client.MessageDeleted += MsgDltd;
NadekoBot.Client.MessageUpdated += MsgUpdtd;
NadekoBot.Client.UserUpdated += UsrUpdtd;
NadekoBot.Client.UserBanned += UsrBanned;
NadekoBot.Client.UserLeft += UsrLeft;
NadekoBot.Client.UserJoined += UsrJoined;
NadekoBot.Client.UserUnbanned += UsrUnbanned;
NadekoBot.Client.ChannelCreated += ChannelCreated;
NadekoBot.Client.ChannelDestroyed += ChannelDestroyed;
NadekoBot.Client.ChannelUpdated += ChannelUpdated;
NadekoBot.Client.MessageReceived += async (s, e) =>
{
var usr = e.Message.MentionedUsers.FirstOrDefault(u => u != e.User);
if (usr?.Status != UserStatus.Offline)
if (e.Channel.IsPrivate || e.User.Id == NadekoBot.Client.CurrentUser.Id)
return;
await e.Channel.SendMessage($"User `{usr.Name}` is offline. PM sent.").ConfigureAwait(false);
await usr.SendMessage(
$"User `{e.User.Name}` mentioned you on " +
$"`{e.Server.Name}` server while you were offline.\n" +
$"`Message:` {e.Message.Text}").ConfigureAwait(false);
}
catch { }
if (!SpecificConfigurations.Default.Of(e.Server.Id).SendPrivateMessageOnMention) return;
try
{
var usr = e.Message.MentionedUsers.FirstOrDefault(u => u != e.User);
if (usr?.Status != UserStatus.Offline)
return;
await e.Channel.SendMessage($"User `{usr.Name}` is offline. PM sent.").ConfigureAwait(false);
await usr.SendMessage(
$"User `{e.User.Name}` mentioned you on " +
$"`{e.Server.Name}` server while you were offline.\n" +
$"`Message:` {e.Message.Text}").ConfigureAwait(false);
}
catch { }
};
};
// start the userpresence queue

View File

@ -9,7 +9,6 @@ using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Timers;
using Timer = System.Timers.Timer;
namespace NadekoBot.Modules.Administration.Commands
@ -38,7 +37,7 @@ namespace NadekoBot.Modules.Administration.Commands
{"%trivia%", () => Games.Commands.TriviaCommands.RunningTrivias.Count.ToString()}
};
private readonly SemaphoreSlim playingPlaceholderLock = new SemaphoreSlim(1,1);
private readonly SemaphoreSlim playingPlaceholderLock = new SemaphoreSlim(1, 1);
public PlayingRotate(DiscordModule module) : base(module)
{
@ -70,8 +69,7 @@ namespace NadekoBot.Modules.Administration.Commands
}
catch { }
};
timer.Enabled = NadekoBot.Config.IsRotatingStatus;
NadekoBot.OnReady += () => timer.Enabled = NadekoBot.Config.IsRotatingStatus;
}
public Func<CommandEventArgs, Task> DoFunc() => async e =>
@ -86,7 +84,8 @@ namespace NadekoBot.Modules.Administration.Commands
NadekoBot.Config.IsRotatingStatus = timer.Enabled;
await ConfigHandler.SaveConfig().ConfigureAwait(false);
}
finally {
finally
{
playingPlaceholderLock.Release();
}
await e.Channel.SendMessage($"❗`Rotating playing status has been {(timer.Enabled ? "enabled" : "disabled")}.`").ConfigureAwait(false);
@ -103,7 +102,7 @@ namespace NadekoBot.Modules.Administration.Commands
cgb.CreateCommand(Module.Prefix + "addplaying")
.Alias(Module.Prefix + "adpl")
.Description("Adds a specified string to the list of playing strings to rotate. " +
"Supported placeholders: " + string.Join(", ", PlayingPlaceholders.Keys)+ $" **Bot Owner Only!**| `{Prefix}adpl`")
"Supported placeholders: " + string.Join(", ", PlayingPlaceholders.Keys) + $" **Bot Owner Only!**| `{Prefix}adpl`")
.Parameter("text", ParameterType.Unparsed)
.AddCheck(SimpleCheckers.OwnerOnly())
.Do(async e =>
@ -152,7 +151,8 @@ namespace NadekoBot.Modules.Administration.Commands
int num;
string str;
await playingPlaceholderLock.WaitAsync().ConfigureAwait(false);
try {
try
{
if (!int.TryParse(arg.Trim(), out num) || num <= 0 || num > NadekoBot.Config.RotatingStatuses.Count)
return;
str = NadekoBot.Config.RotatingStatuses[num - 1];

View File

@ -15,7 +15,7 @@ namespace NadekoBot.Modules.Administration.Commands
public RatelimitCommand(DiscordModule module) : base(module)
{
NadekoBot.Client.MessageReceived += async (s, e) =>
NadekoBot.OnReady += () => NadekoBot.Client.MessageReceived += async (s, e) =>
{
if (e.Channel.IsPrivate || e.User.Id == NadekoBot.Client.CurrentUser.Id)
return;

View File

@ -31,8 +31,12 @@ namespace NadekoBot.Modules.Administration.Commands
{
AnnouncementsDictionary = new ConcurrentDictionary<ulong, AnnounceControls>();
NadekoBot.Client.UserJoined += UserJoined;
NadekoBot.Client.UserLeft += UserLeft;
//gotta subscribe after ready, to prevent trying to send these before all guilds are initialized
NadekoBot.OnReady += () =>
{
NadekoBot.Client.UserJoined += UserJoined;
NadekoBot.Client.UserLeft += UserLeft;
};
var data = Classes.DbHandler.Instance.GetAllRows<DataModels.Announcement>();
@ -245,7 +249,7 @@ namespace NadekoBot.Modules.Administration.Commands
});
cgb.CreateCommand(Module.Prefix + "greetmsg")
.Description($"Sets a new join announcement message. Type %user% if you want to mention the new member. Using it with no message will show the current greet message. **Needs Manage Server Permissions.**| `{Prefix}greetmsg Welcome to the server, %user%.`")
.Description($"Sets a new join announcement message. Type %user% if you want to mention the new member. Using it with no message will show the current greet message. **Needs Manage Server Permissions.**| `{Prefix}greetmsg Welcome, %user%.`")
.Parameter("msg", ParameterType.Unparsed)
.Do(async e =>
{
@ -278,7 +282,7 @@ namespace NadekoBot.Modules.Administration.Commands
});
cgb.CreateCommand(Module.Prefix + "byemsg")
.Description($"Sets a new leave announcement message. Type %user% if you want to mention the new member. Using it with no message will show the current bye message. **Needs Manage Server Permissions.**| `{Prefix}byemsg %user% has left the server.`")
.Description($"Sets a new leave announcement message. Type %user% if you want to mention the new member. Using it with no message will show the current bye message. **Needs Manage Server Permissions.**| `{Prefix}byemsg %user% has left.`")
.Parameter("msg", ParameterType.Unparsed)
.Do(async e =>
{

View File

@ -17,7 +17,7 @@ namespace NadekoBot.Modules.Administration.Commands
public VoicePlusTextCommand(DiscordModule module) : base(module)
{
// changing servers may cause bugs
NadekoBot.Client.UserUpdated += async (sender, e) =>
NadekoBot.OnReady += () => NadekoBot.Client.UserUpdated += async (sender, e) =>
{
try
{

View File

@ -92,7 +92,7 @@ namespace NadekoBot.Classes.Help.Commands
#if DEBUG
File.WriteAllText("../../../docs/Commands List.md", helpstr.ToString());
#else
File.WriteAllText("commandlist.md", helpstr);
File.WriteAllText("commandlist.md", helpstr.ToString());
#endif
};

View File

@ -324,7 +324,7 @@ namespace NadekoBot.Modules.Music
cgb.CreateCommand(Prefix + "soundcloudpl")
.Alias(Prefix + "scpl")
.Description($"Queue a soundcloud playlist using a link. | `{Prefix}scpl https://soundcloud.com/saratology/sets/symphony`")
.Description($"Queue a soundcloud playlist using a link. | `{Prefix}scpl soundcloudseturl`")
.Parameter("pl", ParameterType.Unparsed)
.Do(async e =>
{

View File

@ -14,7 +14,7 @@ namespace NadekoBot.Modules.Permissions.Commands
public FilterInvitesCommand(DiscordModule module) : base(module)
{
NadekoBot.Client.MessageReceived += async (sender, args) =>
NadekoBot.OnReady += () => NadekoBot.Client.MessageReceived += async (sender, args) =>
{
if (args.Channel.IsPrivate || args.User.Id == NadekoBot.Client.CurrentUser.Id) return;
try

View File

@ -11,7 +11,7 @@ namespace NadekoBot.Modules.Permissions.Commands
{
public FilterWords(DiscordModule module) : base(module)
{
NadekoBot.Client.MessageReceived += async (sender, args) =>
NadekoBot.OnReady += () => NadekoBot.Client.MessageReceived += async (sender, args) =>
{
if (args.Channel.IsPrivate || args.User.Id == NadekoBot.Client.CurrentUser.Id) return;
try

View File

@ -70,7 +70,8 @@ namespace NadekoBot.Modules.Searches.Commands
catch { }
await ConfigHandler.SaveConfig().ConfigureAwait(false);
};
checkTimer.Start();
//start checking only after ready, because we need all servers to be initialized
NadekoBot.OnReady += checkTimer.Start;
}
private async Task<Tuple<bool, string>> GetStreamStatus(StreamNotificationConfig stream, bool checkCache = true)

View File

@ -30,7 +30,7 @@ namespace NadekoBot.Modules.Utility.Commands
{
var remList = DbHandler.Instance.GetAllRows<Reminder>();
reminders = remList.Select(StartNewReminder).ToList();
NadekoBot.OnReady += () => reminders = remList.Select(StartNewReminder).ToList();
}
private Timer StartNewReminder(Reminder r)