commit
91e2e4418c
@ -58,7 +58,7 @@ A dialog box will open asking if you want to install `xcode-select`. Select inst
|
||||
Use the following command to get and run `linuxAIO.sh`:
|
||||
(Remember **DO NOT** rename the file `linuxAIO.sh`)
|
||||
|
||||
`cd ~ && wget https://github.com/Kwoth/NadekoBot-BashScript/raw/master/linuxAIO.sh && bash linuxAIO.sh`
|
||||
`cd ~ && wget -N https://github.com/Kwoth/NadekoBot-BashScript/raw/master/linuxAIO.sh && bash linuxAIO.sh`
|
||||
|
||||
Follow the on screen instructions:
|
||||
|
||||
|
@ -1,6 +1,69 @@
|
||||
@ECHO off
|
||||
@TITLE NadekoBot
|
||||
:auto
|
||||
|
||||
|
||||
SET root=%~dp0
|
||||
CD /D %root%
|
||||
|
||||
CLS
|
||||
ECHO Welcome to NadekoBot Auto Restart and Update!
|
||||
ECHO --------------------------------------------
|
||||
ECHO 1.Auto Restart and Update with Dev Build (latest)
|
||||
ECHO 2.Auto Restart and Update with Stable Build
|
||||
ECHO 3.Run Auto Restart normally without Updating (will restart faster)
|
||||
ECHO 4.To exit
|
||||
ECHO.
|
||||
|
||||
CHOICE /C 1234 /M "Enter your choice:"
|
||||
|
||||
:: Note - list ERRORLEVELS in decreasing order
|
||||
IF ERRORLEVEL 4 GOTO exit
|
||||
IF ERRORLEVEL 3 GOTO autorun
|
||||
IF ERRORLEVEL 2 GOTO stablear
|
||||
IF ERRORLEVEL 1 GOTO latestar
|
||||
|
||||
:latestar
|
||||
ECHO Auto Restart and Update with Dev Build (latest)
|
||||
ECHO Bot will auto update on every restart!
|
||||
timeout /t 3
|
||||
CD /D %~dp0NadekoBot\src\NadekoBot
|
||||
dotnet run --configuration Release
|
||||
goto auto
|
||||
ECHO Updating...
|
||||
timeout /t 3
|
||||
SET "FILENAME=%~dp0\Latest.bat"
|
||||
bitsadmin.exe /transfer "Downloading Nadeko (Latest)" /priority high https://github.com/Kwoth/NadekoBot/raw/master/scripts/Latest.bat "%FILENAME%"
|
||||
ECHO NadekoBot Dev Build (latest) downloaded.
|
||||
SET root=%~dp0
|
||||
CD /D %root%
|
||||
CALL Latest.bat
|
||||
GOTO latestar
|
||||
|
||||
:stablear
|
||||
ECHO Auto Restart and Update with Stable Build
|
||||
ECHO Bot will auto update on every restart!
|
||||
timeout /t 3
|
||||
CD /D %~dp0NadekoBot\src\NadekoBot
|
||||
dotnet run --configuration Release
|
||||
ECHO Updating...
|
||||
timeout /t 3
|
||||
SET "FILENAME=%~dp0\Stable.bat"
|
||||
bitsadmin.exe /transfer "Downloading Nadeko (Stable)" /priority high https://github.com/Kwoth/NadekoBot/raw/master/scripts/Stable.bat "%FILENAME%"
|
||||
ECHO NadekoBot Stable build downloaded.
|
||||
SET root=%~dp0
|
||||
CD /D %root%
|
||||
CALL Stable.bat
|
||||
GOTO stablear
|
||||
|
||||
:autorun
|
||||
ECHO Normal Auto Restart
|
||||
ECHO Bot will not auto update on every restart!
|
||||
timeout /t 3
|
||||
CD /D %~dp0NadekoBot\src\NadekoBot
|
||||
dotnet run --configuration Release
|
||||
goto autorun
|
||||
|
||||
:Exit
|
||||
SET root=%~dp0
|
||||
CD /D %root%
|
||||
del NadekoAutoRun.bat
|
||||
CALL NadekoInstaller.bat
|
||||
|
@ -53,7 +53,7 @@ namespace NadekoBot.Modules.Administration
|
||||
bool shouldDelete;
|
||||
using (var uow = DbHandler.UnitOfWork())
|
||||
{
|
||||
shouldDelete = uow.GuildConfigs.For(channel.Guild.Id, set => set).DeleteMessageOnCommand;
|
||||
shouldDelete = uow.GuildConfigs.For(Context.Guild.Id, set => set).DeleteMessageOnCommand;
|
||||
}
|
||||
|
||||
if (shouldDelete)
|
||||
|
@ -87,7 +87,7 @@ namespace NadekoBot.Modules.Administration
|
||||
if (msg == null || Context.User.IsBot)
|
||||
return Task.CompletedTask;
|
||||
|
||||
var channel = Context.Channel as ITextChannel;
|
||||
//var channel = Context.Channel as ITextChannel;
|
||||
if (channel == null)
|
||||
return Task.CompletedTask;
|
||||
|
||||
@ -96,7 +96,7 @@ namespace NadekoBot.Modules.Administration
|
||||
try
|
||||
{
|
||||
AntiSpamSetting spamSettings;
|
||||
if (!antiSpamGuilds.TryGetValue(channel.Guild.Id, out spamSettings))
|
||||
if (!antiSpamGuilds.TryGetValue(Context.Guild.Id, out spamSettings))
|
||||
return;
|
||||
|
||||
var stats = spamSettings.UserStats.AddOrUpdate(Context.User.Id, new UserSpamStats(msg.Content),
|
||||
@ -199,27 +199,27 @@ namespace NadekoBot.Modules.Administration
|
||||
[RequireUserPermission(GuildPermission.Administrator)]
|
||||
public async Task AntiRaid(IUserMessage imsg, int userThreshold, int seconds, PunishmentAction action)
|
||||
{
|
||||
var channel = (ITextChannel)Context.Channel;
|
||||
////var channel = (ITextChannel)Context.Channel;
|
||||
|
||||
if (userThreshold < 2 || userThreshold > 30)
|
||||
{
|
||||
await channel.SendErrorAsync("❗️User threshold must be between **2** and **30**.").ConfigureAwait(false);
|
||||
await Context.Channel.SendErrorAsync("❗️User threshold must be between **2** and **30**.").ConfigureAwait(false);
|
||||
return;
|
||||
}
|
||||
|
||||
if (seconds < 2 || seconds > 300)
|
||||
{
|
||||
await channel.SendErrorAsync("❗️Time must be between **2** and **300** seconds.").ConfigureAwait(false);
|
||||
await Context.Channel.SendErrorAsync("❗️Time must be between **2** and **300** seconds.").ConfigureAwait(false);
|
||||
return;
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
await MuteCommands.GetMuteRole(channel.Guild).ConfigureAwait(false);
|
||||
await MuteCommands.GetMuteRole(Context.Guild).ConfigureAwait(false);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
await channel.SendConfirmAsync("⚠️ Failed creating a mute role. Give me ManageRoles permission" +
|
||||
await Context.Channel.SendConfirmAsync("⚠️ Failed creating a mute role. Give me ManageRoles permission" +
|
||||
"or create 'nadeko-mute' role with disabled SendMessages and try again.")
|
||||
.ConfigureAwait(false);
|
||||
_log.Warn(ex);
|
||||
@ -232,9 +232,9 @@ namespace NadekoBot.Modules.Administration
|
||||
Seconds = seconds,
|
||||
UserThreshold = userThreshold,
|
||||
};
|
||||
antiRaidGuilds.AddOrUpdate(channel.Guild.Id, setting, (id, old) => setting);
|
||||
antiRaidGuilds.AddOrUpdate(Context.Guild.Id, setting, (id, old) => setting);
|
||||
|
||||
await channel.SendConfirmAsync($"ℹ️ {Context.User.Mention} If **{userThreshold}** or more users join within **{seconds}** seconds, I will **{action}** them.")
|
||||
await Context.Channel.SendConfirmAsync($"ℹ️ {Context.User.Mention} If **{userThreshold}** or more users join within **{seconds}** seconds, I will **{action}** them.")
|
||||
.ConfigureAwait(false);
|
||||
}
|
||||
|
||||
@ -243,37 +243,37 @@ namespace NadekoBot.Modules.Administration
|
||||
[RequireUserPermission(GuildPermission.Administrator)]
|
||||
public async Task AntiSpam(IUserMessage imsg, int messageCount=3, PunishmentAction action = PunishmentAction.Mute)
|
||||
{
|
||||
var channel = (ITextChannel)Context.Channel;
|
||||
////var channel = (ITextChannel)Context.Channel;
|
||||
|
||||
if (messageCount < 2 || messageCount > 10)
|
||||
return;
|
||||
|
||||
AntiSpamSetting throwaway;
|
||||
if (antiSpamGuilds.TryRemove(channel.Guild.Id, out throwaway))
|
||||
if (antiSpamGuilds.TryRemove(Context.Guild.Id, out throwaway))
|
||||
{
|
||||
await channel.SendConfirmAsync("🆗 **Anti-Spam feature** has been **disabled** on this server.").ConfigureAwait(false);
|
||||
await Context.Channel.SendConfirmAsync("🆗 **Anti-Spam feature** has been **disabled** on this server.").ConfigureAwait(false);
|
||||
}
|
||||
else
|
||||
{
|
||||
try
|
||||
{
|
||||
await MuteCommands.GetMuteRole(channel.Guild).ConfigureAwait(false);
|
||||
await MuteCommands.GetMuteRole(Context.Guild).ConfigureAwait(false);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
await channel.SendErrorAsync("⚠️ Failed creating a mute role. Give me ManageRoles permission" +
|
||||
await Context.Channel.SendErrorAsync("⚠️ Failed creating a mute role. Give me ManageRoles permission" +
|
||||
"or create 'nadeko-mute' role with disabled SendMessages and try again.")
|
||||
.ConfigureAwait(false);
|
||||
_log.Warn(ex);
|
||||
return;
|
||||
}
|
||||
|
||||
if (antiSpamGuilds.TryAdd(channel.Guild.Id, new AntiSpamSetting()
|
||||
if (antiSpamGuilds.TryAdd(Context.Guild.Id, new AntiSpamSetting()
|
||||
{
|
||||
Action = action,
|
||||
MessageThreshold = messageCount,
|
||||
}))
|
||||
await channel.SendConfirmAsync("✅ **Anti-Spam feature** has been **enabled** on this server.").ConfigureAwait(false);
|
||||
await Context.Channel.SendConfirmAsync("✅ **Anti-Spam feature** has been **enabled** on this server.").ConfigureAwait(false);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -48,12 +48,12 @@ namespace NadekoBot.Modules.Administration
|
||||
[RequireUserPermission(GuildPermission.ManageRoles)]
|
||||
public async Task AutoAssignRole(IUserMessage umsg, [Remainder] IRole role = null)
|
||||
{
|
||||
var channel = (ITextChannel)Context.Channel;
|
||||
//var channel = (ITextChannel)Context.Channel;
|
||||
|
||||
GuildConfig conf;
|
||||
using (var uow = DbHandler.UnitOfWork())
|
||||
{
|
||||
conf = uow.GuildConfigs.For(channel.Guild.Id, set => set);
|
||||
conf = uow.GuildConfigs.For(Context.Guild.Id, set => set);
|
||||
if (role == null)
|
||||
conf.AutoAssignRoleId = 0;
|
||||
else
|
||||
@ -64,11 +64,11 @@ namespace NadekoBot.Modules.Administration
|
||||
|
||||
if (role == null)
|
||||
{
|
||||
await channel.SendConfirmAsync("🆗 **Auto assign role** on user join is now **disabled**.").ConfigureAwait(false);
|
||||
await Context.Channel.SendConfirmAsync("🆗 **Auto assign role** on user join is now **disabled**.").ConfigureAwait(false);
|
||||
return;
|
||||
}
|
||||
|
||||
await channel.SendConfirmAsync("✅ **Auto assign role** on user join is now **enabled**.").ConfigureAwait(false);
|
||||
await Context.Channel.SendConfirmAsync("✅ **Auto assign role** on user join is now **enabled**.").ConfigureAwait(false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -28,7 +28,7 @@ namespace NadekoBot.Modules.Administration
|
||||
if (msg == null)
|
||||
return Task.CompletedTask;
|
||||
|
||||
var channel = Context.Channel as ITextChannel;
|
||||
//var channel = Context.Channel as ITextChannel;
|
||||
if (channel == null)
|
||||
return Task.CompletedTask;
|
||||
|
||||
@ -42,7 +42,7 @@ namespace NadekoBot.Modules.Administration
|
||||
continue;
|
||||
foreach (var chan in set.Except(new[] { channel }))
|
||||
{
|
||||
try { await chan.SendMessageAsync(GetText(channel.Guild, channel, (IGuildUser)Context.User, msg)).ConfigureAwait(false); } catch (Exception ex) { _log.Warn(ex); }
|
||||
try { await chan.SendMessageAsync(GetText(Context.Guild, channel, (IGuildUser)Context.User, msg)).ConfigureAwait(false); } catch (Exception ex) { _log.Warn(ex); }
|
||||
}
|
||||
}
|
||||
});
|
||||
@ -61,7 +61,7 @@ namespace NadekoBot.Modules.Administration
|
||||
[OwnerOnly]
|
||||
public async Task Scsc()
|
||||
{
|
||||
var channel = (ITextChannel)Context.Channel;
|
||||
////var channel = (ITextChannel)Context.Channel;
|
||||
var token = new NadekoRandom().Next();
|
||||
var set = new ConcurrentHashSet<ITextChannel>();
|
||||
if (Subscribers.TryAdd(token, set))
|
||||
@ -76,13 +76,13 @@ namespace NadekoBot.Modules.Administration
|
||||
[RequireUserPermission(GuildPermission.ManageGuild)]
|
||||
public async Task Jcsc(IUserMessage imsg, int token)
|
||||
{
|
||||
var channel = (ITextChannel)Context.Channel;
|
||||
////var channel = (ITextChannel)Context.Channel;
|
||||
|
||||
ConcurrentHashSet<ITextChannel> set;
|
||||
if (!Subscribers.TryGetValue(token, out set))
|
||||
return;
|
||||
set.Add(channel);
|
||||
await channel.SendConfirmAsync("Joined cross server channel.").ConfigureAwait(false);
|
||||
await Context.Channel.SendConfirmAsync("Joined cross server channel.").ConfigureAwait(false);
|
||||
}
|
||||
|
||||
[NadekoCommand, Usage, Description, Aliases]
|
||||
@ -90,13 +90,13 @@ namespace NadekoBot.Modules.Administration
|
||||
[RequireUserPermission(GuildPermission.ManageGuild)]
|
||||
public async Task Lcsc()
|
||||
{
|
||||
var channel = (ITextChannel)Context.Channel;
|
||||
////var channel = (ITextChannel)Context.Channel;
|
||||
|
||||
foreach (var subscriber in Subscribers)
|
||||
{
|
||||
subscriber.Value.TryRemove(channel);
|
||||
}
|
||||
await channel.SendMessageAsync("Left cross server channel.").ConfigureAwait(false);
|
||||
await Context.Channel.SendMessageAsync("Left cross server channel.").ConfigureAwait(false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -31,7 +31,7 @@ namespace NadekoBot.Modules.Administration
|
||||
[OwnerOnly]
|
||||
public async Task ForwardMessages()
|
||||
{
|
||||
var channel = Context.Channel;
|
||||
//var channel = Context.Channel;
|
||||
|
||||
using (var uow = DbHandler.UnitOfWork())
|
||||
{
|
||||
@ -40,16 +40,16 @@ namespace NadekoBot.Modules.Administration
|
||||
uow.Complete();
|
||||
}
|
||||
if (ForwardDMs)
|
||||
await channel.SendConfirmAsync("✅ **I will forward DMs from now on.**").ConfigureAwait(false);
|
||||
await Context.Channel.SendConfirmAsync("✅ **I will forward DMs from now on.**").ConfigureAwait(false);
|
||||
else
|
||||
await channel.SendConfirmAsync("🆗 **I will stop forwarding DMs from now on.**").ConfigureAwait(false);
|
||||
await Context.Channel.SendConfirmAsync("🆗 **I will stop forwarding DMs from now on.**").ConfigureAwait(false);
|
||||
}
|
||||
|
||||
[NadekoCommand, Usage, Description, Aliases]
|
||||
[OwnerOnly]
|
||||
public async Task ForwardToAll()
|
||||
{
|
||||
var channel = Context.Channel;
|
||||
//var channel = Context.Channel;
|
||||
|
||||
using (var uow = DbHandler.UnitOfWork())
|
||||
{
|
||||
@ -58,9 +58,9 @@ namespace NadekoBot.Modules.Administration
|
||||
uow.Complete();
|
||||
}
|
||||
if (ForwardDMsToAllOwners)
|
||||
await channel.SendConfirmAsync("ℹ️ **I will forward DMs to all owners.**").ConfigureAwait(false);
|
||||
await Context.Channel.SendConfirmAsync("ℹ️ **I will forward DMs to all owners.**").ConfigureAwait(false);
|
||||
else
|
||||
await channel.SendConfirmAsync("ℹ️ **I will forward DMs only to the first owner.**").ConfigureAwait(false);
|
||||
await Context.Channel.SendConfirmAsync("ℹ️ **I will forward DMs only to the first owner.**").ConfigureAwait(false);
|
||||
|
||||
}
|
||||
|
||||
|
@ -469,19 +469,19 @@ namespace NadekoBot.Modules.Administration
|
||||
if (msg == null || msg.IsAuthor())
|
||||
return Task.CompletedTask;
|
||||
|
||||
var channel = Context.Channel as ITextChannel;
|
||||
//var channel = Context.Channel as ITextChannel;
|
||||
if (channel == null)
|
||||
return Task.CompletedTask;
|
||||
|
||||
LogSetting logSetting;
|
||||
if (!GuildLogSettings.TryGetValue(channel.Guild.Id, out logSetting)
|
||||
if (!GuildLogSettings.TryGetValue(Context.Guild.Id, out logSetting)
|
||||
|| !logSetting.IsLogging
|
||||
|| !logSetting.MessageDeleted
|
||||
|| logSetting.IgnoredChannels.Any(ilc => ilc.ChannelId == channel.Id))
|
||||
return Task.CompletedTask;
|
||||
|
||||
ITextChannel logChannel;
|
||||
if ((logChannel = TryGetLogChannel(channel.Guild, logSetting)) == null || logChannel.Id == msg.Id)
|
||||
if ((logChannel = TryGetLogChannel(Context.Guild, logSetting)) == null || logChannel.Id == msg.Id)
|
||||
return Task.CompletedTask;
|
||||
|
||||
var task = Task.Run(async () =>
|
||||
@ -510,19 +510,19 @@ namespace NadekoBot.Modules.Administration
|
||||
if (before == null)
|
||||
return Task.CompletedTask;
|
||||
|
||||
var channel = after.Channel as ITextChannel;
|
||||
//var channel = after.Channel as ITextChannel;
|
||||
if (channel == null)
|
||||
return Task.CompletedTask;
|
||||
|
||||
LogSetting logSetting;
|
||||
if (!GuildLogSettings.TryGetValue(channel.Guild.Id, out logSetting)
|
||||
if (!GuildLogSettings.TryGetValue(Context.Guild.Id, out logSetting)
|
||||
|| !logSetting.IsLogging
|
||||
|| !logSetting.MessageUpdated
|
||||
|| logSetting.IgnoredChannels.Any(ilc => ilc.ChannelId == channel.Id))
|
||||
return Task.CompletedTask;
|
||||
|
||||
ITextChannel logChannel;
|
||||
if ((logChannel = TryGetLogChannel(channel.Guild, logSetting)) == null || logChannel.Id == after.Channel.Id)
|
||||
if ((logChannel = TryGetLogChannel(Context.Guild, logSetting)) == null || logChannel.Id == after.Channel.Id)
|
||||
return Task.CompletedTask;
|
||||
|
||||
var task = Task.Run(async () =>
|
||||
@ -553,7 +553,7 @@ namespace NadekoBot.Modules.Administration
|
||||
id = logSetting.UserPresenceChannelId;
|
||||
break;
|
||||
}
|
||||
var channel = guild.GetTextChannel(id);
|
||||
//var channel = guild.GetTextChannel(id);
|
||||
|
||||
if (channel == null)
|
||||
using (var uow = DbHandler.UnitOfWork())
|
||||
@ -585,12 +585,12 @@ namespace NadekoBot.Modules.Administration
|
||||
[OwnerOnly]
|
||||
public async Task LogServer()
|
||||
{
|
||||
var channel = (ITextChannel)Context.Channel;
|
||||
//var channel = (ITextChannel)Context.Channel;
|
||||
LogSetting logSetting;
|
||||
using (var uow = DbHandler.UnitOfWork())
|
||||
{
|
||||
logSetting = uow.GuildConfigs.For(channel.Guild.Id).LogSetting;
|
||||
GuildLogSettings.AddOrUpdate(channel.Guild.Id, (id) => logSetting, (id, old) => logSetting);
|
||||
logSetting = uow.GuildConfigs.For(Context.Guild.Id).LogSetting;
|
||||
GuildLogSettings.AddOrUpdate(Context.Guild.Id, (id) => logSetting, (id, old) => logSetting);
|
||||
logSetting.IsLogging = !logSetting.IsLogging;
|
||||
if (logSetting.IsLogging)
|
||||
logSetting.ChannelId = channel.Id;
|
||||
@ -598,9 +598,9 @@ namespace NadekoBot.Modules.Administration
|
||||
}
|
||||
|
||||
if (logSetting.IsLogging)
|
||||
await channel.SendMessageAsync("✅ **Logging enabled.**").ConfigureAwait(false);
|
||||
await Context.Channel.SendMessageAsync("✅ **Logging enabled.**").ConfigureAwait(false);
|
||||
else
|
||||
await channel.SendMessageAsync("ℹ️ **Logging disabled.**").ConfigureAwait(false);
|
||||
await Context.Channel.SendMessageAsync("ℹ️ **Logging disabled.**").ConfigureAwait(false);
|
||||
}
|
||||
|
||||
[NadekoCommand, Usage, Description, Aliases]
|
||||
@ -609,12 +609,12 @@ namespace NadekoBot.Modules.Administration
|
||||
[OwnerOnly]
|
||||
public async Task LogIgnore()
|
||||
{
|
||||
var channel = (ITextChannel)Context.Channel;
|
||||
//var channel = (ITextChannel)Context.Channel;
|
||||
int removed;
|
||||
using (var uow = DbHandler.UnitOfWork())
|
||||
{
|
||||
var config = uow.GuildConfigs.For(channel.Guild.Id);
|
||||
LogSetting logSetting = GuildLogSettings.GetOrAdd(channel.Guild.Id, (id) => config.LogSetting);
|
||||
var config = uow.GuildConfigs.For(Context.Guild.Id);
|
||||
LogSetting logSetting = GuildLogSettings.GetOrAdd(Context.Guild.Id, (id) => config.LogSetting);
|
||||
removed = logSetting.IgnoredChannels.RemoveWhere(ilc => ilc.ChannelId == channel.Id);
|
||||
config.LogSetting.IgnoredChannels.RemoveWhere(ilc => ilc.ChannelId == channel.Id);
|
||||
if (removed == 0)
|
||||
@ -627,9 +627,9 @@ namespace NadekoBot.Modules.Administration
|
||||
}
|
||||
|
||||
if (removed == 0)
|
||||
await channel.SendMessageAsync($"🆗 Logging will **now ignore** #⃣ `{channel.Name} ({channel.Id})`").ConfigureAwait(false);
|
||||
await Context.Channel.SendMessageAsync($"🆗 Logging will **now ignore** #⃣ `{channel.Name} ({channel.Id})`").ConfigureAwait(false);
|
||||
else
|
||||
await channel.SendMessageAsync($"ℹ️ Logging will **no longer ignore** #⃣ `{channel.Name} ({channel.Id})`").ConfigureAwait(false);
|
||||
await Context.Channel.SendMessageAsync($"ℹ️ Logging will **no longer ignore** #⃣ `{channel.Name} ({channel.Id})`").ConfigureAwait(false);
|
||||
}
|
||||
|
||||
//[LocalizedCommand, LocalizedRemarks, LocalizedSummary, LocalizedAlias]
|
||||
@ -637,7 +637,7 @@ namespace NadekoBot.Modules.Administration
|
||||
//[OwnerOnly]
|
||||
//public async Task LogAdd([Remainder] string eventName)
|
||||
//{
|
||||
// var channel = (ITextChannel)Context.Channel;
|
||||
// //var channel = (ITextChannel)Context.Channel;
|
||||
// //eventName = eventName?.Replace(" ","").ToLowerInvariant();
|
||||
|
||||
// switch (eventName.ToLowerInvariant())
|
||||
@ -653,16 +653,16 @@ namespace NadekoBot.Modules.Administration
|
||||
// case "channelupdated":
|
||||
// using (var uow = DbHandler.UnitOfWork())
|
||||
// {
|
||||
// var logSetting = uow.GuildConfigs.For(channel.Guild.Id).LogSetting;
|
||||
// GuildLogSettings.AddOrUpdate(channel.Guild.Id, (id) => logSetting, (id, old) => logSetting);
|
||||
// var logSetting = uow.GuildConfigs.For(Context.Guild.Id).LogSetting;
|
||||
// GuildLogSettings.AddOrUpdate(Context.Guild.Id, (id) => logSetting, (id, old) => logSetting);
|
||||
// var prop = logSetting.GetType().GetProperty(eventName);
|
||||
// prop.SetValue(logSetting, true);
|
||||
// await uow.CompleteAsync().ConfigureAwait(false);
|
||||
// }
|
||||
// await channel.SendMessageAsync($"`Now logging {eventName} event.`").ConfigureAwait(false);
|
||||
// await Context.Channel.SendMessageAsync($"`Now logging {eventName} event.`").ConfigureAwait(false);
|
||||
// break;
|
||||
// default:
|
||||
// await channel.SendMessageAsync($"`Event \"{eventName}\" not found.`").ConfigureAwait(false);
|
||||
// await Context.Channel.SendMessageAsync($"`Event \"{eventName}\" not found.`").ConfigureAwait(false);
|
||||
// break;
|
||||
// }
|
||||
//}
|
||||
@ -671,7 +671,7 @@ namespace NadekoBot.Modules.Administration
|
||||
//[RequireContext(ContextType.Guild)]
|
||||
//public async Task LogRemove(string eventName)
|
||||
//{
|
||||
// var channel = (ITextChannel)Context.Channel;
|
||||
// //var channel = (ITextChannel)Context.Channel;
|
||||
// eventName = eventName.ToLowerInvariant();
|
||||
|
||||
// switch (eventName)
|
||||
@ -688,16 +688,16 @@ namespace NadekoBot.Modules.Administration
|
||||
// case "channelupdated":
|
||||
// using (var uow = DbHandler.UnitOfWork())
|
||||
// {
|
||||
// var config = uow.GuildConfigs.For(channel.Guild.Id);
|
||||
// LogSetting logSetting = GuildLogSettings.GetOrAdd(channel.Guild.Id, (id) => config.LogSetting);
|
||||
// var config = uow.GuildConfigs.For(Context.Guild.Id);
|
||||
// LogSetting logSetting = GuildLogSettings.GetOrAdd(Context.Guild.Id, (id) => config.LogSetting);
|
||||
// logSetting.GetType().GetProperty(eventName).SetValue(logSetting, false);
|
||||
// config.LogSetting = logSetting;
|
||||
// await uow.CompleteAsync().ConfigureAwait(false);
|
||||
// }
|
||||
// await channel.SendMessageAsync($"`No longer logging {eventName} event.`").ConfigureAwait(false);
|
||||
// await Context.Channel.SendMessageAsync($"`No longer logging {eventName} event.`").ConfigureAwait(false);
|
||||
// break;
|
||||
// default:
|
||||
// await channel.SendMessageAsync($"`Event \"{eventName}\" not found.`").ConfigureAwait(false);
|
||||
// await Context.Channel.SendMessageAsync($"`Event \"{eventName}\" not found.`").ConfigureAwait(false);
|
||||
// break;
|
||||
// }
|
||||
//}
|
||||
@ -707,12 +707,12 @@ namespace NadekoBot.Modules.Administration
|
||||
[RequireUserPermission(GuildPermission.Administrator)]
|
||||
public async Task UserPresence()
|
||||
{
|
||||
var channel = (ITextChannel)Context.Channel;
|
||||
//var channel = (ITextChannel)Context.Channel;
|
||||
bool enabled;
|
||||
using (var uow = DbHandler.UnitOfWork())
|
||||
{
|
||||
var logSetting = uow.GuildConfigs.For(channel.Guild.Id).LogSetting;
|
||||
GuildLogSettings.AddOrUpdate(channel.Guild.Id, (id) => logSetting, (id, old) => logSetting);
|
||||
var logSetting = uow.GuildConfigs.For(Context.Guild.Id).LogSetting;
|
||||
GuildLogSettings.AddOrUpdate(Context.Guild.Id, (id) => logSetting, (id, old) => logSetting);
|
||||
enabled = logSetting.LogUserPresence = !logSetting.LogUserPresence;
|
||||
if(enabled)
|
||||
logSetting.UserPresenceChannelId = channel.Id;
|
||||
@ -720,9 +720,9 @@ namespace NadekoBot.Modules.Administration
|
||||
}
|
||||
|
||||
if (enabled)
|
||||
await channel.SendMessageAsync($"✅ Logging **user presence** updates in #⃣ `{channel.Name} ({channel.Id})`").ConfigureAwait(false);
|
||||
await Context.Channel.SendMessageAsync($"✅ Logging **user presence** updates in #⃣ `{channel.Name} ({channel.Id})`").ConfigureAwait(false);
|
||||
else
|
||||
await channel.SendMessageAsync($"ℹ️ Stopped logging **user presence** updates.").ConfigureAwait(false);
|
||||
await Context.Channel.SendMessageAsync($"ℹ️ Stopped logging **user presence** updates.").ConfigureAwait(false);
|
||||
}
|
||||
|
||||
[NadekoCommand, Usage, Description, Aliases]
|
||||
@ -730,14 +730,14 @@ namespace NadekoBot.Modules.Administration
|
||||
[RequireUserPermission(GuildPermission.Administrator)]
|
||||
public async Task VoicePresence()
|
||||
{
|
||||
var channel = (ITextChannel)Context.Channel;
|
||||
//var channel = (ITextChannel)Context.Channel;
|
||||
bool enabled;
|
||||
using (var uow = DbHandler.UnitOfWork())
|
||||
{
|
||||
var logSetting = uow.GuildConfigs.For(channel.Guild.Id, set => set.Include(gc => gc.LogSetting)
|
||||
var logSetting = uow.GuildConfigs.For(Context.Guild.Id, set => set.Include(gc => gc.LogSetting)
|
||||
.ThenInclude(ls => ls.IgnoredVoicePresenceChannelIds))
|
||||
.LogSetting;
|
||||
GuildLogSettings.AddOrUpdate(channel.Guild.Id, (id) => logSetting, (id, old) => logSetting);
|
||||
GuildLogSettings.AddOrUpdate(Context.Guild.Id, (id) => logSetting, (id, old) => logSetting);
|
||||
enabled = logSetting.LogVoicePresence = !logSetting.LogVoicePresence;
|
||||
if (enabled)
|
||||
logSetting.VoicePresenceChannelId = channel.Id;
|
||||
@ -745,21 +745,21 @@ namespace NadekoBot.Modules.Administration
|
||||
}
|
||||
|
||||
if (enabled)
|
||||
await channel.SendMessageAsync($"✅ Logging **voice presence** updates in #⃣ `{channel.Name} ({channel.Id})`").ConfigureAwait(false);
|
||||
await Context.Channel.SendMessageAsync($"✅ Logging **voice presence** updates in #⃣ `{channel.Name} ({channel.Id})`").ConfigureAwait(false);
|
||||
else
|
||||
await channel.SendMessageAsync($"ℹ️ Stopped logging **voice presence** updates.").ConfigureAwait(false);
|
||||
await Context.Channel.SendMessageAsync($"ℹ️ Stopped logging **voice presence** updates.").ConfigureAwait(false);
|
||||
}
|
||||
|
||||
//[LocalizedCommand, LocalizedDescription, LocalizedSummary, LocalizedAlias]
|
||||
//[RequireContext(ContextType.Guild)]
|
||||
//public async Task VoiPresIgnore(IUserMessage imsg, IVoiceChannel voiceChannel)
|
||||
//{
|
||||
// var channel = (ITextChannel)Context.Channel;
|
||||
// //var channel = (ITextChannel)Context.Channel;
|
||||
// int removed;
|
||||
// using (var uow = DbHandler.UnitOfWork())
|
||||
// {
|
||||
// var config = uow.GuildConfigs.For(channel.Guild.Id);
|
||||
// LogSetting logSetting = GuildLogSettings.GetOrAdd(channel.Guild.Id, (id) => config.LogSetting);
|
||||
// var config = uow.GuildConfigs.For(Context.Guild.Id);
|
||||
// LogSetting logSetting = GuildLogSettings.GetOrAdd(Context.Guild.Id, (id) => config.LogSetting);
|
||||
// removed = logSetting.IgnoredVoicePresenceChannelIds.RemoveWhere(ivpc => ivpc.ChannelId == voiceChannel.Id);
|
||||
// if (removed == 0)
|
||||
// logSetting.IgnoredVoicePresenceChannelIds.Add(new IgnoredVoicePresenceChannel { ChannelId = voiceChannel.Id });
|
||||
@ -768,9 +768,9 @@ namespace NadekoBot.Modules.Administration
|
||||
// }
|
||||
|
||||
// if (removed == 0)
|
||||
// await channel.SendMessageAsync($"`Enabled logging voice presence updates for {voiceChannel.Name} ({voiceChannel.Id}) channel.`").ConfigureAwait(false);
|
||||
// await Context.Channel.SendMessageAsync($"`Enabled logging voice presence updates for {voiceChannel.Name} ({voiceChannel.Id}) channel.`").ConfigureAwait(false);
|
||||
// else
|
||||
// await channel.SendMessageAsync($"`Disabled logging voice presence updates for {voiceChannel.Name} ({voiceChannel.Id}) channel.`").ConfigureAwait(false);
|
||||
// await Context.Channel.SendMessageAsync($"`Disabled logging voice presence updates for {voiceChannel.Name} ({voiceChannel.Id}) channel.`").ConfigureAwait(false);
|
||||
//}
|
||||
}
|
||||
}
|
||||
|
@ -53,7 +53,7 @@ namespace NadekoBot.Modules.Administration
|
||||
await Task.Delay(Repeater.Interval, token).ConfigureAwait(false);
|
||||
if (oldMsg != null)
|
||||
try { await oldMsg.DeleteAsync(); } catch { }
|
||||
try { oldMsg = await Channel.SendMessageAsync("🔄 " + Repeater.Message).ConfigureAwait(false); } catch (Exception ex) { _log.Warn(ex); try { source.Cancel(); } catch { } }
|
||||
try { oldMsg = await Context.Channel.SendMessageAsync("🔄 " + Repeater.Message).ConfigureAwait(false); } catch (Exception ex) { _log.Warn(ex); try { source.Cancel(); } catch { } }
|
||||
}
|
||||
}
|
||||
catch (OperationCanceledException) { }
|
||||
@ -84,16 +84,16 @@ namespace NadekoBot.Modules.Administration
|
||||
[RequireUserPermission(GuildPermission.ManageMessages)]
|
||||
public async Task RepeatInvoke()
|
||||
{
|
||||
var channel = (ITextChannel)Context.Channel;
|
||||
//var channel = (ITextChannel)Context.Channel;
|
||||
|
||||
RepeatRunner rep;
|
||||
if (!repeaters.TryGetValue(channel.Id, out rep))
|
||||
{
|
||||
await channel.SendErrorAsync("ℹ️ **No repeating message found on this server.**").ConfigureAwait(false);
|
||||
await Context.Channel.SendErrorAsync("ℹ️ **No repeating message found on this server.**").ConfigureAwait(false);
|
||||
return;
|
||||
}
|
||||
rep.Reset();
|
||||
await channel.SendMessageAsync("🔄 " + rep.Repeater.Message).ConfigureAwait(false);
|
||||
await Context.Channel.SendMessageAsync("🔄 " + rep.Repeater.Message).ConfigureAwait(false);
|
||||
}
|
||||
|
||||
[NadekoCommand, Usage, Description, Aliases]
|
||||
@ -101,7 +101,7 @@ namespace NadekoBot.Modules.Administration
|
||||
[RequireUserPermission(GuildPermission.ManageMessages)]
|
||||
public async Task Repeat()
|
||||
{
|
||||
var channel = (ITextChannel)Context.Channel;
|
||||
//var channel = (ITextChannel)Context.Channel;
|
||||
RepeatRunner rep;
|
||||
if (repeaters.TryRemove(channel.Id, out rep))
|
||||
{
|
||||
@ -111,10 +111,10 @@ namespace NadekoBot.Modules.Administration
|
||||
await uow.CompleteAsync();
|
||||
}
|
||||
rep.Stop();
|
||||
await channel.SendConfirmAsync("✅ **Stopped repeating a message.**").ConfigureAwait(false);
|
||||
await Context.Channel.SendConfirmAsync("✅ **Stopped repeating a message.**").ConfigureAwait(false);
|
||||
}
|
||||
else
|
||||
await channel.SendConfirmAsync("ℹ️ **No message is repeating.**").ConfigureAwait(false);
|
||||
await Context.Channel.SendConfirmAsync("ℹ️ **No message is repeating.**").ConfigureAwait(false);
|
||||
}
|
||||
|
||||
[NadekoCommand, Usage, Description, Aliases]
|
||||
@ -122,7 +122,7 @@ namespace NadekoBot.Modules.Administration
|
||||
[RequireUserPermission(GuildPermission.ManageMessages)]
|
||||
public async Task Repeat(IUserMessage imsg, int minutes, [Remainder] string message)
|
||||
{
|
||||
var channel = (ITextChannel)Context.Channel;
|
||||
//var channel = (ITextChannel)Context.Channel;
|
||||
|
||||
if (minutes < 1 || minutes > 10080)
|
||||
return;
|
||||
@ -139,7 +139,7 @@ namespace NadekoBot.Modules.Administration
|
||||
var localRep = new Repeater
|
||||
{
|
||||
ChannelId = channel.Id,
|
||||
GuildId = channel.Guild.Id,
|
||||
GuildId = Context.Guild.Id,
|
||||
Interval = TimeSpan.FromMinutes(minutes),
|
||||
Message = message,
|
||||
};
|
||||
@ -160,7 +160,7 @@ namespace NadekoBot.Modules.Administration
|
||||
return old;
|
||||
});
|
||||
|
||||
await channel.SendConfirmAsync($"🔁 Repeating **\"{rep.Repeater.Message}\"** every `{rep.Repeater.Interval.Days} day(s), {rep.Repeater.Interval.Hours} hour(s) and {rep.Repeater.Interval.Minutes} minute(s)`.").ConfigureAwait(false);
|
||||
await Context.Channel.SendConfirmAsync($"🔁 Repeating **\"{rep.Repeater.Message}\"** every `{rep.Repeater.Interval.Days} day(s), {rep.Repeater.Interval.Hours} hour(s) and {rep.Repeater.Interval.Minutes} minute(s)`.").ConfigureAwait(false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -36,7 +36,7 @@ namespace NadekoBot.Modules.Administration
|
||||
[OwnerOnly]
|
||||
public async Task MigrateData()
|
||||
{
|
||||
var channel = (ITextChannel)Context.Channel;
|
||||
//var channel = (ITextChannel)Context.Channel;
|
||||
|
||||
var version = 0;
|
||||
using (var uow = DbHandler.UnitOfWork())
|
||||
|
@ -141,19 +141,19 @@ namespace NadekoBot.Modules.Administration
|
||||
[Priority(1)]
|
||||
public async Task SetMuteRole(IUserMessage imsg, [Remainder] string name)
|
||||
{
|
||||
var channel = (ITextChannel)Context.Channel;
|
||||
//var channel = (ITextChannel)Context.Channel;
|
||||
name = name.Trim();
|
||||
if (string.IsNullOrWhiteSpace(name))
|
||||
return;
|
||||
|
||||
using (var uow = DbHandler.UnitOfWork())
|
||||
{
|
||||
var config = uow.GuildConfigs.For(channel.Guild.Id, set => set);
|
||||
var config = uow.GuildConfigs.For(Context.Guild.Id, set => set);
|
||||
config.MuteRoleName = name;
|
||||
GuildMuteRoles.AddOrUpdate(channel.Guild.Id, name, (id, old) => name);
|
||||
GuildMuteRoles.AddOrUpdate(Context.Guild.Id, name, (id, old) => name);
|
||||
await uow.CompleteAsync().ConfigureAwait(false);
|
||||
}
|
||||
await channel.SendConfirmAsync("☑️ **New mute role set.**").ConfigureAwait(false);
|
||||
await Context.Channel.SendConfirmAsync("☑️ **New mute role set.**").ConfigureAwait(false);
|
||||
}
|
||||
|
||||
[NadekoCommand, Usage, Description, Aliases]
|
||||
@ -169,16 +169,16 @@ namespace NadekoBot.Modules.Administration
|
||||
[RequireUserPermission(GuildPermission.MuteMembers)]
|
||||
public async Task Mute(IUserMessage umsg, IGuildUser user)
|
||||
{
|
||||
var channel = (ITextChannel)Context.Channel;
|
||||
//var channel = (ITextChannel)Context.Channel;
|
||||
|
||||
try
|
||||
{
|
||||
await Mute(user).ConfigureAwait(false);
|
||||
await channel.SendConfirmAsync($"🔇 **{user}** has been **muted** from text and voice chat.").ConfigureAwait(false);
|
||||
await Context.Channel.SendConfirmAsync($"🔇 **{user}** has been **muted** from text and voice chat.").ConfigureAwait(false);
|
||||
}
|
||||
catch
|
||||
{
|
||||
await channel.SendErrorAsync("⚠️ I most likely don't have the permission necessary for that.").ConfigureAwait(false);
|
||||
await Context.Channel.SendErrorAsync("⚠️ I most likely don't have the permission necessary for that.").ConfigureAwait(false);
|
||||
}
|
||||
}
|
||||
|
||||
@ -188,16 +188,16 @@ namespace NadekoBot.Modules.Administration
|
||||
[RequireUserPermission(GuildPermission.MuteMembers)]
|
||||
public async Task Unmute(IUserMessage umsg, IGuildUser user)
|
||||
{
|
||||
var channel = (ITextChannel)Context.Channel;
|
||||
//var channel = (ITextChannel)Context.Channel;
|
||||
|
||||
try
|
||||
{
|
||||
await Unmute(user).ConfigureAwait(false);
|
||||
await channel.SendConfirmAsync($"🔉 **{user}** has been **unmuted** from text and voice chat.").ConfigureAwait(false);
|
||||
await Context.Channel.SendConfirmAsync($"🔉 **{user}** has been **unmuted** from text and voice chat.").ConfigureAwait(false);
|
||||
}
|
||||
catch
|
||||
{
|
||||
await channel.SendErrorAsync("⚠️ I most likely don't have the permission necessary for that.").ConfigureAwait(false);
|
||||
await Context.Channel.SendErrorAsync("⚠️ I most likely don't have the permission necessary for that.").ConfigureAwait(false);
|
||||
}
|
||||
}
|
||||
|
||||
@ -206,17 +206,17 @@ namespace NadekoBot.Modules.Administration
|
||||
[RequireUserPermission(GuildPermission.ManageRoles)]
|
||||
public async Task ChatMute(IUserMessage umsg, IGuildUser user)
|
||||
{
|
||||
var channel = (ITextChannel)Context.Channel;
|
||||
//var channel = (ITextChannel)Context.Channel;
|
||||
|
||||
try
|
||||
{
|
||||
await user.AddRolesAsync(await GetMuteRole(channel.Guild).ConfigureAwait(false)).ConfigureAwait(false);
|
||||
await user.AddRolesAsync(await GetMuteRole(Context.Guild).ConfigureAwait(false)).ConfigureAwait(false);
|
||||
await UserMuted(user, MuteType.Chat).ConfigureAwait(false);
|
||||
await channel.SendConfirmAsync($"✏️🚫 **{user}** has been **muted** from chatting.").ConfigureAwait(false);
|
||||
await Context.Channel.SendConfirmAsync($"✏️🚫 **{user}** has been **muted** from chatting.").ConfigureAwait(false);
|
||||
}
|
||||
catch
|
||||
{
|
||||
await channel.SendErrorAsync("⚠️ I most likely don't have the permission necessary for that.").ConfigureAwait(false);
|
||||
await Context.Channel.SendErrorAsync("⚠️ I most likely don't have the permission necessary for that.").ConfigureAwait(false);
|
||||
}
|
||||
}
|
||||
|
||||
@ -225,17 +225,17 @@ namespace NadekoBot.Modules.Administration
|
||||
[RequireUserPermission(GuildPermission.ManageRoles)]
|
||||
public async Task ChatUnmute(IUserMessage umsg, IGuildUser user)
|
||||
{
|
||||
var channel = (ITextChannel)Context.Channel;
|
||||
//var channel = (ITextChannel)Context.Channel;
|
||||
|
||||
try
|
||||
{
|
||||
await user.RemoveRolesAsync(await GetMuteRole(channel.Guild).ConfigureAwait(false)).ConfigureAwait(false);
|
||||
await user.RemoveRolesAsync(await GetMuteRole(Context.Guild).ConfigureAwait(false)).ConfigureAwait(false);
|
||||
await UserUnmuted(user, MuteType.Chat).ConfigureAwait(false);
|
||||
await channel.SendConfirmAsync($"✏️✅ **{user}** has been **unmuted** from chatting.").ConfigureAwait(false);
|
||||
await Context.Channel.SendConfirmAsync($"✏️✅ **{user}** has been **unmuted** from chatting.").ConfigureAwait(false);
|
||||
}
|
||||
catch
|
||||
{
|
||||
await channel.SendErrorAsync("⚠️ I most likely don't have the permission necessary for that.").ConfigureAwait(false);
|
||||
await Context.Channel.SendErrorAsync("⚠️ I most likely don't have the permission necessary for that.").ConfigureAwait(false);
|
||||
}
|
||||
}
|
||||
|
||||
@ -244,17 +244,17 @@ namespace NadekoBot.Modules.Administration
|
||||
[RequireUserPermission(GuildPermission.MuteMembers)]
|
||||
public async Task VoiceMute(IUserMessage umsg, IGuildUser user)
|
||||
{
|
||||
var channel = (ITextChannel)Context.Channel;
|
||||
//var channel = (ITextChannel)Context.Channel;
|
||||
|
||||
try
|
||||
{
|
||||
await user.ModifyAsync(usr => usr.Mute = true).ConfigureAwait(false);
|
||||
await UserMuted(user, MuteType.Voice).ConfigureAwait(false);
|
||||
await channel.SendConfirmAsync($"🎙🚫 **{user}** has been **voice muted**.").ConfigureAwait(false);
|
||||
await Context.Channel.SendConfirmAsync($"🎙🚫 **{user}** has been **voice muted**.").ConfigureAwait(false);
|
||||
}
|
||||
catch
|
||||
{
|
||||
await channel.SendErrorAsync("⚠️ I most likely don't have the permission necessary for that.").ConfigureAwait(false);
|
||||
await Context.Channel.SendErrorAsync("⚠️ I most likely don't have the permission necessary for that.").ConfigureAwait(false);
|
||||
}
|
||||
}
|
||||
|
||||
@ -263,16 +263,16 @@ namespace NadekoBot.Modules.Administration
|
||||
[RequireUserPermission(GuildPermission.MuteMembers)]
|
||||
public async Task VoiceUnmute(IUserMessage umsg, IGuildUser user)
|
||||
{
|
||||
var channel = (ITextChannel)Context.Channel;
|
||||
//var channel = (ITextChannel)Context.Channel;
|
||||
try
|
||||
{
|
||||
await user.ModifyAsync(usr => usr.Mute = false).ConfigureAwait(false);
|
||||
await UserUnmuted(user, MuteType.Voice).ConfigureAwait(false);
|
||||
await channel.SendConfirmAsync($"🎙✅ **{user}** has been **voice unmuted**.").ConfigureAwait(false);
|
||||
await Context.Channel.SendConfirmAsync($"🎙✅ **{user}** has been **voice unmuted**.").ConfigureAwait(false);
|
||||
}
|
||||
catch
|
||||
{
|
||||
await channel.SendErrorAsync("⚠️ I most likely don't have the permission necessary for that.").ConfigureAwait(false);
|
||||
await Context.Channel.SendErrorAsync("⚠️ I most likely don't have the permission necessary for that.").ConfigureAwait(false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -68,7 +68,7 @@ namespace NadekoBot.Modules.Administration
|
||||
var t = Task.Run(async () =>
|
||||
{
|
||||
var usrMsg = umsg as IUserMessage;
|
||||
var channel = usrContext.Channel as ITextChannel;
|
||||
//var channel = usrContext.Channel as ITextChannel;
|
||||
|
||||
if (channel == null || usrMsg.IsAuthor())
|
||||
return;
|
||||
@ -88,13 +88,13 @@ namespace NadekoBot.Modules.Administration
|
||||
[RequireUserPermission(GuildPermission.ManageMessages)]
|
||||
public async Task Slowmode()
|
||||
{
|
||||
var channel = (ITextChannel)Context.Channel;
|
||||
//var channel = (ITextChannel)Context.Channel;
|
||||
|
||||
Ratelimiter throwaway;
|
||||
if (RatelimitingChannels.TryRemove(channel.Id, out throwaway))
|
||||
{
|
||||
throwaway.cancelSource.Cancel();
|
||||
await channel.SendConfirmAsync("ℹ️ Slow mode disabled.").ConfigureAwait(false);
|
||||
await Context.Channel.SendConfirmAsync("ℹ️ Slow mode disabled.").ConfigureAwait(false);
|
||||
return;
|
||||
}
|
||||
}
|
||||
@ -105,11 +105,11 @@ namespace NadekoBot.Modules.Administration
|
||||
public async Task Slowmode(IUserMessage umsg, int msg, int perSec)
|
||||
{
|
||||
await Slowmode(umsg).ConfigureAwait(false); // disable if exists
|
||||
var channel = (ITextChannel)Context.Channel;
|
||||
//var channel = (ITextChannel)Context.Channel;
|
||||
|
||||
if (msg < 1 || perSec < 1 || msg > 100 || perSec > 3600)
|
||||
{
|
||||
await channel.SendErrorAsync("⚠️ Invalid parameters.");
|
||||
await Context.Channel.SendErrorAsync("⚠️ Invalid parameters.");
|
||||
return;
|
||||
}
|
||||
var toAdd = new Ratelimiter()
|
||||
@ -120,7 +120,7 @@ namespace NadekoBot.Modules.Administration
|
||||
};
|
||||
if(RatelimitingChannels.TryAdd(channel.Id, toAdd))
|
||||
{
|
||||
await channel.SendConfirmAsync("Slow mode initiated",
|
||||
await Context.Channel.SendConfirmAsync("Slow mode initiated",
|
||||
$"Users can't send more than `{toAdd.MaxMessages} message(s)` every `{toAdd.PerSeconds} second(s)`.")
|
||||
.ConfigureAwait(false);
|
||||
}
|
||||
|
@ -24,16 +24,16 @@ namespace NadekoBot.Modules.Administration
|
||||
[RequireUserPermission(GuildPermission.ManageMessages)]
|
||||
public async Task AdSarm()
|
||||
{
|
||||
var channel = (ITextChannel)Context.Channel;
|
||||
//var channel = (ITextChannel)Context.Channel;
|
||||
bool newval;
|
||||
using (var uow = DbHandler.UnitOfWork())
|
||||
{
|
||||
var config = uow.GuildConfigs.For(channel.Guild.Id, set => set);
|
||||
var config = uow.GuildConfigs.For(Context.Guild.Id, set => set);
|
||||
newval = config.AutoDeleteSelfAssignedRoleMessages = !config.AutoDeleteSelfAssignedRoleMessages;
|
||||
await uow.CompleteAsync().ConfigureAwait(false);
|
||||
}
|
||||
|
||||
await channel.SendConfirmAsync($"ℹ️ Automatic deleting of `iam` and `iamn` confirmations has been {(newval ? "**enabled**" : "**disabled**")}.")
|
||||
await Context.Channel.SendConfirmAsync($"ℹ️ Automatic deleting of `iam` and `iamn` confirmations has been {(newval ? "**enabled**" : "**disabled**")}.")
|
||||
.ConfigureAwait(false);
|
||||
}
|
||||
|
||||
@ -42,17 +42,17 @@ namespace NadekoBot.Modules.Administration
|
||||
[RequireUserPermission(GuildPermission.ManageRoles)]
|
||||
public async Task Asar(IUserMessage umsg, [Remainder] IRole role)
|
||||
{
|
||||
var channel = (ITextChannel)Context.Channel;
|
||||
//var channel = (ITextChannel)Context.Channel;
|
||||
|
||||
IEnumerable<SelfAssignedRole> roles;
|
||||
|
||||
string msg;
|
||||
using (var uow = DbHandler.UnitOfWork())
|
||||
{
|
||||
roles = uow.SelfAssignedRoles.GetFromGuild(channel.Guild.Id);
|
||||
roles = uow.SelfAssignedRoles.GetFromGuild(Context.Guild.Id);
|
||||
if (roles.Any(s => s.RoleId == role.Id && s.GuildId == role.GuildId))
|
||||
{
|
||||
await channel.SendMessageAsync($"💢 Role **{role.Name}** is already in the list.").ConfigureAwait(false);
|
||||
await Context.Channel.SendMessageAsync($"💢 Role **{role.Name}** is already in the list.").ConfigureAwait(false);
|
||||
return;
|
||||
}
|
||||
else
|
||||
@ -65,7 +65,7 @@ namespace NadekoBot.Modules.Administration
|
||||
msg = $"🆗 Role **{role.Name}** added to the list.";
|
||||
}
|
||||
}
|
||||
await channel.SendConfirmAsync(msg.ToString()).ConfigureAwait(false);
|
||||
await Context.Channel.SendConfirmAsync(msg.ToString()).ConfigureAwait(false);
|
||||
}
|
||||
|
||||
[NadekoCommand, Usage, Description, Aliases]
|
||||
@ -73,7 +73,7 @@ namespace NadekoBot.Modules.Administration
|
||||
[RequireUserPermission(GuildPermission.ManageRoles)]
|
||||
public async Task Rsar(IUserMessage umsg, [Remainder] IRole role)
|
||||
{
|
||||
var channel = (ITextChannel)Context.Channel;
|
||||
//var channel = (ITextChannel)Context.Channel;
|
||||
|
||||
bool success;
|
||||
using (var uow = DbHandler.UnitOfWork())
|
||||
@ -83,17 +83,17 @@ namespace NadekoBot.Modules.Administration
|
||||
}
|
||||
if (!success)
|
||||
{
|
||||
await channel.SendErrorAsync("❎ That role is not self-assignable.").ConfigureAwait(false);
|
||||
await Context.Channel.SendErrorAsync("❎ That role is not self-assignable.").ConfigureAwait(false);
|
||||
return;
|
||||
}
|
||||
await channel.SendConfirmAsync($"🗑 **{role.Name}** has been removed from the list of self-assignable roles.").ConfigureAwait(false);
|
||||
await Context.Channel.SendConfirmAsync($"🗑 **{role.Name}** has been removed from the list of self-assignable roles.").ConfigureAwait(false);
|
||||
}
|
||||
|
||||
[NadekoCommand, Usage, Description, Aliases]
|
||||
[RequireContext(ContextType.Guild)]
|
||||
public async Task Lsar()
|
||||
{
|
||||
var channel = (ITextChannel)Context.Channel;
|
||||
//var channel = (ITextChannel)Context.Channel;
|
||||
|
||||
var toRemove = new ConcurrentHashSet<SelfAssignedRole>();
|
||||
var removeMsg = new StringBuilder();
|
||||
@ -101,13 +101,13 @@ namespace NadekoBot.Modules.Administration
|
||||
var roleCnt = 0;
|
||||
using (var uow = DbHandler.UnitOfWork())
|
||||
{
|
||||
var roleModels = uow.SelfAssignedRoles.GetFromGuild(channel.Guild.Id).ToList();
|
||||
var roleModels = uow.SelfAssignedRoles.GetFromGuild(Context.Guild.Id).ToList();
|
||||
roleCnt = roleModels.Count;
|
||||
msg.AppendLine();
|
||||
|
||||
foreach (var roleModel in roleModels)
|
||||
{
|
||||
var role = channel.Guild.Roles.FirstOrDefault(r => r.Id == roleModel.RoleId);
|
||||
var role = Context.Guild.Roles.FirstOrDefault(r => r.Id == roleModel.RoleId);
|
||||
if (role == null)
|
||||
{
|
||||
uow.SelfAssignedRoles.Remove(roleModel);
|
||||
@ -123,7 +123,7 @@ namespace NadekoBot.Modules.Administration
|
||||
}
|
||||
await uow.CompleteAsync();
|
||||
}
|
||||
await channel.SendConfirmAsync($"ℹ️ There are `{roleCnt}` self assignable roles:", msg.ToString() + "\n\n" + removeMsg.ToString()).ConfigureAwait(false);
|
||||
await Context.Channel.SendConfirmAsync($"ℹ️ There are `{roleCnt}` self assignable roles:", msg.ToString() + "\n\n" + removeMsg.ToString()).ConfigureAwait(false);
|
||||
}
|
||||
|
||||
[NadekoCommand, Usage, Description, Aliases]
|
||||
@ -131,25 +131,25 @@ namespace NadekoBot.Modules.Administration
|
||||
[RequireUserPermission(GuildPermission.ManageRoles)]
|
||||
public async Task Tesar()
|
||||
{
|
||||
var channel = (ITextChannel)Context.Channel;
|
||||
//var channel = (ITextChannel)Context.Channel;
|
||||
|
||||
bool areExclusive;
|
||||
using (var uow = DbHandler.UnitOfWork())
|
||||
{
|
||||
var config = uow.GuildConfigs.For(channel.Guild.Id, set => set);
|
||||
var config = uow.GuildConfigs.For(Context.Guild.Id, set => set);
|
||||
|
||||
areExclusive = config.ExclusiveSelfAssignedRoles = !config.ExclusiveSelfAssignedRoles;
|
||||
await uow.CompleteAsync();
|
||||
}
|
||||
string exl = areExclusive ? "**exclusive**." : "**not exclusive**.";
|
||||
await channel.SendConfirmAsync("ℹ️ Self assigned roles are now " + exl);
|
||||
await Context.Channel.SendConfirmAsync("ℹ️ Self assigned roles are now " + exl);
|
||||
}
|
||||
|
||||
[NadekoCommand, Usage, Description, Aliases]
|
||||
[RequireContext(ContextType.Guild)]
|
||||
public async Task Iam(IUserMessage umsg, [Remainder] IRole role)
|
||||
{
|
||||
var channel = (ITextChannel)Context.Channel;
|
||||
//var channel = (ITextChannel)Context.Channel;
|
||||
var guildUser = (IGuildUser)Context.User;
|
||||
var usrMsg = (IUserMessage)umsg;
|
||||
|
||||
@ -157,18 +157,18 @@ namespace NadekoBot.Modules.Administration
|
||||
IEnumerable<SelfAssignedRole> roles;
|
||||
using (var uow = DbHandler.UnitOfWork())
|
||||
{
|
||||
conf = uow.GuildConfigs.For(channel.Guild.Id, set => set);
|
||||
roles = uow.SelfAssignedRoles.GetFromGuild(channel.Guild.Id);
|
||||
conf = uow.GuildConfigs.For(Context.Guild.Id, set => set);
|
||||
roles = uow.SelfAssignedRoles.GetFromGuild(Context.Guild.Id);
|
||||
}
|
||||
SelfAssignedRole roleModel;
|
||||
if ((roleModel = roles.FirstOrDefault(r=>r.RoleId == role.Id)) == null)
|
||||
{
|
||||
await channel.SendErrorAsync("That role is not self-assignable.").ConfigureAwait(false);
|
||||
await Context.Channel.SendErrorAsync("That role is not self-assignable.").ConfigureAwait(false);
|
||||
return;
|
||||
}
|
||||
if (guildUser.Roles.Contains(role))
|
||||
{
|
||||
await channel.SendErrorAsync($"You already have **{role.Name}** role.").ConfigureAwait(false);
|
||||
await Context.Channel.SendErrorAsync($"You already have **{role.Name}** role.").ConfigureAwait(false);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -177,7 +177,7 @@ namespace NadekoBot.Modules.Administration
|
||||
var sameRoles = guildUser.Roles.Where(r => roles.Any(rm => rm.RoleId == r.Id));
|
||||
if (sameRoles.Any())
|
||||
{
|
||||
await channel.SendErrorAsync($"You already have **{sameRoles.FirstOrDefault().Name}** `exclusive self-assigned` role.").ConfigureAwait(false);
|
||||
await Context.Channel.SendErrorAsync($"You already have **{sameRoles.FirstOrDefault().Name}** `exclusive self-assigned` role.").ConfigureAwait(false);
|
||||
return;
|
||||
}
|
||||
}
|
||||
@ -187,11 +187,11 @@ namespace NadekoBot.Modules.Administration
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
await channel.SendErrorAsync($"⚠️ I am unable to add that role to you. `I can't add roles to owners or other roles higher than my role in the role hierarchy.`").ConfigureAwait(false);
|
||||
await Context.Channel.SendErrorAsync($"⚠️ I am unable to add that role to you. `I can't add roles to owners or other roles higher than my role in the role hierarchy.`").ConfigureAwait(false);
|
||||
Console.WriteLine(ex);
|
||||
return;
|
||||
}
|
||||
var msg = await channel.SendConfirmAsync($"🆗 You now have **{role.Name}** role.").ConfigureAwait(false);
|
||||
var msg = await Context.Channel.SendConfirmAsync($"🆗 You now have **{role.Name}** role.").ConfigureAwait(false);
|
||||
|
||||
if (conf.AutoDeleteSelfAssignedRoleMessages)
|
||||
{
|
||||
@ -208,25 +208,25 @@ namespace NadekoBot.Modules.Administration
|
||||
[RequireContext(ContextType.Guild)]
|
||||
public async Task Iamnot(IUserMessage umsg, [Remainder] IRole role)
|
||||
{
|
||||
var channel = (ITextChannel)Context.Channel;
|
||||
//var channel = (ITextChannel)Context.Channel;
|
||||
var guildUser = (IGuildUser)Context.User;
|
||||
|
||||
bool autoDeleteSelfAssignedRoleMessages;
|
||||
IEnumerable<SelfAssignedRole> roles;
|
||||
using (var uow = DbHandler.UnitOfWork())
|
||||
{
|
||||
autoDeleteSelfAssignedRoleMessages = uow.GuildConfigs.For(channel.Guild.Id, set => set).AutoDeleteSelfAssignedRoleMessages;
|
||||
roles = uow.SelfAssignedRoles.GetFromGuild(channel.Guild.Id);
|
||||
autoDeleteSelfAssignedRoleMessages = uow.GuildConfigs.For(Context.Guild.Id, set => set).AutoDeleteSelfAssignedRoleMessages;
|
||||
roles = uow.SelfAssignedRoles.GetFromGuild(Context.Guild.Id);
|
||||
}
|
||||
SelfAssignedRole roleModel;
|
||||
if ((roleModel = roles.FirstOrDefault(r => r.RoleId == role.Id)) == null)
|
||||
{
|
||||
await channel.SendErrorAsync("💢 That role is not self-assignable.").ConfigureAwait(false);
|
||||
await Context.Channel.SendErrorAsync("💢 That role is not self-assignable.").ConfigureAwait(false);
|
||||
return;
|
||||
}
|
||||
if (!guildUser.Roles.Contains(role))
|
||||
{
|
||||
await channel.SendErrorAsync($"❎ You don't have **{role.Name}** role.").ConfigureAwait(false);
|
||||
await Context.Channel.SendErrorAsync($"❎ You don't have **{role.Name}** role.").ConfigureAwait(false);
|
||||
return;
|
||||
}
|
||||
try
|
||||
@ -235,10 +235,10 @@ namespace NadekoBot.Modules.Administration
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
await channel.SendErrorAsync($"⚠️ I am unable to add that role to you. `I can't remove roles to owners or other roles higher than my role in the role hierarchy.`").ConfigureAwait(false);
|
||||
await Context.Channel.SendErrorAsync($"⚠️ I am unable to add that role to you. `I can't remove roles to owners or other roles higher than my role in the role hierarchy.`").ConfigureAwait(false);
|
||||
return;
|
||||
}
|
||||
var msg = await channel.SendConfirmAsync($"🆗 You no longer have **{role.Name}** role.").ConfigureAwait(false);
|
||||
var msg = await Context.Channel.SendConfirmAsync($"🆗 You no longer have **{role.Name}** role.").ConfigureAwait(false);
|
||||
|
||||
if (autoDeleteSelfAssignedRoleMessages)
|
||||
{
|
||||
|
@ -24,7 +24,7 @@ namespace NadekoBot.Modules.Administration
|
||||
[OwnerOnly]
|
||||
public async Task Leave(IUserMessage umsg, [Remainder] string guildStr)
|
||||
{
|
||||
var channel = (ITextChannel)Context.Channel;
|
||||
//var channel = (ITextChannel)Context.Channel;
|
||||
|
||||
guildStr = guildStr.Trim().ToUpperInvariant();
|
||||
var server = _client.GetGuilds().FirstOrDefault(g => g.Id.ToString().Trim().ToUpperInvariant() == guildStr) ??
|
||||
@ -32,18 +32,18 @@ namespace NadekoBot.Modules.Administration
|
||||
|
||||
if (server == null)
|
||||
{
|
||||
await channel.SendErrorAsync("⚠️ Cannot find that server").ConfigureAwait(false);
|
||||
await Context.Channel.SendErrorAsync("⚠️ Cannot find that server").ConfigureAwait(false);
|
||||
return;
|
||||
}
|
||||
if (server.OwnerId != _client.CurrentUser().Id)
|
||||
{
|
||||
await server.LeaveAsync().ConfigureAwait(false);
|
||||
await channel.SendConfirmAsync("✅ Left server " + server.Name).ConfigureAwait(false);
|
||||
await Context.Channel.SendConfirmAsync("✅ Left server " + server.Name).ConfigureAwait(false);
|
||||
}
|
||||
else
|
||||
{
|
||||
await server.DeleteAsync().ConfigureAwait(false);
|
||||
await channel.SendConfirmAsync("Deleted server " + server.Name).ConfigureAwait(false);
|
||||
await Context.Channel.SendConfirmAsync("Deleted server " + server.Name).ConfigureAwait(false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -39,7 +39,7 @@ namespace NadekoBot.Modules.Administration
|
||||
}
|
||||
|
||||
if (!conf.SendChannelByeMessage) return;
|
||||
var channel = (await user.Guild.GetTextChannelsAsync()).SingleOrDefault(c => c.Id == conf.ByeMessageChannelId);
|
||||
//var channel = (await user.Guild.GetTextChannelsAsync()).SingleOrDefault(c => c.Id == conf.ByeMessageChannelId);
|
||||
|
||||
if (channel == null) //maybe warn the server owner that the channel is missing
|
||||
return;
|
||||
@ -49,7 +49,7 @@ namespace NadekoBot.Modules.Administration
|
||||
return;
|
||||
try
|
||||
{
|
||||
var toDelete = await channel.SendMessageAsync(msg.SanitizeMentions()).ConfigureAwait(false);
|
||||
var toDelete = await Context.Channel.SendMessageAsync(msg.SanitizeMentions()).ConfigureAwait(false);
|
||||
if (conf.AutoDeleteByeMessagesTimer > 0)
|
||||
{
|
||||
var t = Task.Run(async () =>
|
||||
@ -80,7 +80,7 @@ namespace NadekoBot.Modules.Administration
|
||||
|
||||
if (conf.SendChannelGreetMessage)
|
||||
{
|
||||
var channel = (await user.Guild.GetTextChannelsAsync()).SingleOrDefault(c => c.Id == conf.GreetMessageChannelId);
|
||||
//var channel = (await user.Guild.GetTextChannelsAsync()).SingleOrDefault(c => c.Id == conf.GreetMessageChannelId);
|
||||
if (channel != null) //maybe warn the server owner that the channel is missing
|
||||
{
|
||||
var msg = conf.ChannelGreetMessageText.Replace("%user%", user.Mention).Replace("%id%", user.Id.ToString()).Replace("%server%", user.Guild.Name);
|
||||
@ -88,7 +88,7 @@ namespace NadekoBot.Modules.Administration
|
||||
{
|
||||
try
|
||||
{
|
||||
var toDelete = await channel.SendMessageAsync(msg.SanitizeMentions()).ConfigureAwait(false);
|
||||
var toDelete = await Context.Channel.SendMessageAsync(msg.SanitizeMentions()).ConfigureAwait(false);
|
||||
if (conf.AutoDeleteGreetMessagesTimer > 0)
|
||||
{
|
||||
var t = Task.Run(async () =>
|
||||
@ -105,14 +105,14 @@ namespace NadekoBot.Modules.Administration
|
||||
|
||||
if (conf.SendDmGreetMessage)
|
||||
{
|
||||
var channel = await user.CreateDMChannelAsync();
|
||||
//var channel = await user.CreateDMChannelAsync();
|
||||
|
||||
if (channel != null)
|
||||
{
|
||||
var msg = conf.DmGreetMessageText.Replace("%user%", user.Username).Replace("%server%", user.Guild.Name);
|
||||
if (!string.IsNullOrWhiteSpace(msg))
|
||||
{
|
||||
await channel.SendConfirmAsync(msg).ConfigureAwait(false);
|
||||
await Context.Channel.SendConfirmAsync(msg).ConfigureAwait(false);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -127,16 +127,16 @@ namespace NadekoBot.Modules.Administration
|
||||
[RequireUserPermission(GuildPermission.ManageGuild)]
|
||||
public async Task GreetDel(IUserMessage umsg, int timer = 30)
|
||||
{
|
||||
var channel = (ITextChannel)Context.Channel;
|
||||
//var channel = (ITextChannel)Context.Channel;
|
||||
if (timer < 0 || timer > 600)
|
||||
return;
|
||||
|
||||
await ServerGreetCommands.SetGreetDel(channel.Guild.Id, timer).ConfigureAwait(false);
|
||||
await ServerGreetCommands.SetGreetDel(Context.Guild.Id, timer).ConfigureAwait(false);
|
||||
|
||||
if (timer > 0)
|
||||
await channel.SendConfirmAsync($"🆗 Greet messages **will be deleted** after `{timer} seconds`.").ConfigureAwait(false);
|
||||
await Context.Channel.SendConfirmAsync($"🆗 Greet messages **will be deleted** after `{timer} seconds`.").ConfigureAwait(false);
|
||||
else
|
||||
await channel.SendConfirmAsync("ℹ️ Automatic deletion of greet messages has been **disabled**.").ConfigureAwait(false);
|
||||
await Context.Channel.SendConfirmAsync("ℹ️ Automatic deletion of greet messages has been **disabled**.").ConfigureAwait(false);
|
||||
}
|
||||
|
||||
private static async Task SetGreetDel(ulong id, int timer)
|
||||
@ -158,14 +158,14 @@ namespace NadekoBot.Modules.Administration
|
||||
[RequireUserPermission(GuildPermission.ManageGuild)]
|
||||
public async Task Greet()
|
||||
{
|
||||
var channel = (ITextChannel)Context.Channel;
|
||||
//var channel = (ITextChannel)Context.Channel;
|
||||
|
||||
var enabled = await ServerGreetCommands.SetGreet(channel.Guild.Id, channel.Id).ConfigureAwait(false);
|
||||
var enabled = await ServerGreetCommands.SetGreet(Context.Guild.Id, channel.Id).ConfigureAwait(false);
|
||||
|
||||
if (enabled)
|
||||
await channel.SendConfirmAsync("✅ Greeting messages **enabled** on this channel.").ConfigureAwait(false);
|
||||
await Context.Channel.SendConfirmAsync("✅ Greeting messages **enabled** on this channel.").ConfigureAwait(false);
|
||||
else
|
||||
await channel.SendConfirmAsync("ℹ️ Greeting messages **disabled**.").ConfigureAwait(false);
|
||||
await Context.Channel.SendConfirmAsync("ℹ️ Greeting messages **disabled**.").ConfigureAwait(false);
|
||||
}
|
||||
|
||||
private static async Task<bool> SetGreet(ulong guildId, ulong channelId, bool? value = null)
|
||||
@ -187,24 +187,24 @@ namespace NadekoBot.Modules.Administration
|
||||
[RequireUserPermission(GuildPermission.ManageGuild)]
|
||||
public async Task GreetMsg(IUserMessage umsg, [Remainder] string text = null)
|
||||
{
|
||||
var channel = (ITextChannel)Context.Channel;
|
||||
//var channel = (ITextChannel)Context.Channel;
|
||||
|
||||
if (string.IsNullOrWhiteSpace(text))
|
||||
{
|
||||
string channelGreetMessageText;
|
||||
using (var uow = DbHandler.UnitOfWork())
|
||||
{
|
||||
channelGreetMessageText = uow.GuildConfigs.For(channel.Guild.Id, set => set).ChannelGreetMessageText;
|
||||
channelGreetMessageText = uow.GuildConfigs.For(Context.Guild.Id, set => set).ChannelGreetMessageText;
|
||||
}
|
||||
await channel.SendConfirmAsync("Current greet message: ", channelGreetMessageText?.SanitizeMentions());
|
||||
await Context.Channel.SendConfirmAsync("Current greet message: ", channelGreetMessageText?.SanitizeMentions());
|
||||
return;
|
||||
}
|
||||
|
||||
var sendGreetEnabled = ServerGreetCommands.SetGreetMessage(channel.Guild.Id, ref text);
|
||||
var sendGreetEnabled = ServerGreetCommands.SetGreetMessage(Context.Guild.Id, ref text);
|
||||
|
||||
await channel.SendConfirmAsync("🆗 New greet message **set**.").ConfigureAwait(false);
|
||||
await Context.Channel.SendConfirmAsync("🆗 New greet message **set**.").ConfigureAwait(false);
|
||||
if (!sendGreetEnabled)
|
||||
await channel.SendConfirmAsync("ℹ️ Enable greet messsages by typing `.greet`").ConfigureAwait(false);
|
||||
await Context.Channel.SendConfirmAsync("ℹ️ Enable greet messsages by typing `.greet`").ConfigureAwait(false);
|
||||
}
|
||||
|
||||
public static bool SetGreetMessage(ulong guildId, ref string message)
|
||||
@ -231,14 +231,14 @@ namespace NadekoBot.Modules.Administration
|
||||
[RequireUserPermission(GuildPermission.ManageGuild)]
|
||||
public async Task GreetDm()
|
||||
{
|
||||
var channel = (ITextChannel)Context.Channel;
|
||||
//var channel = (ITextChannel)Context.Channel;
|
||||
|
||||
var enabled = await ServerGreetCommands.SetGreetDm(channel.Guild.Id).ConfigureAwait(false);
|
||||
var enabled = await ServerGreetCommands.SetGreetDm(Context.Guild.Id).ConfigureAwait(false);
|
||||
|
||||
if (enabled)
|
||||
await channel.SendConfirmAsync("🆗 DM Greet announcements **enabled**.").ConfigureAwait(false);
|
||||
await Context.Channel.SendConfirmAsync("🆗 DM Greet announcements **enabled**.").ConfigureAwait(false);
|
||||
else
|
||||
await channel.SendConfirmAsync("ℹ️ Greet announcements **disabled**.").ConfigureAwait(false);
|
||||
await Context.Channel.SendConfirmAsync("ℹ️ Greet announcements **disabled**.").ConfigureAwait(false);
|
||||
}
|
||||
|
||||
private static async Task<bool> SetGreetDm(ulong guildId, bool? value = null)
|
||||
@ -259,24 +259,24 @@ namespace NadekoBot.Modules.Administration
|
||||
[RequireUserPermission(GuildPermission.ManageGuild)]
|
||||
public async Task GreetDmMsg(IUserMessage umsg, [Remainder] string text = null)
|
||||
{
|
||||
var channel = (ITextChannel)Context.Channel;
|
||||
//var channel = (ITextChannel)Context.Channel;
|
||||
|
||||
if (string.IsNullOrWhiteSpace(text))
|
||||
{
|
||||
GuildConfig config;
|
||||
using (var uow = DbHandler.UnitOfWork())
|
||||
{
|
||||
config = uow.GuildConfigs.For(channel.Guild.Id);
|
||||
config = uow.GuildConfigs.For(Context.Guild.Id);
|
||||
}
|
||||
await channel.SendConfirmAsync("ℹ️ Current **DM greet** message: `" + config.DmGreetMessageText?.SanitizeMentions() + "`");
|
||||
await Context.Channel.SendConfirmAsync("ℹ️ Current **DM greet** message: `" + config.DmGreetMessageText?.SanitizeMentions() + "`");
|
||||
return;
|
||||
}
|
||||
|
||||
var sendGreetEnabled = ServerGreetCommands.SetGreetDmMessage(channel.Guild.Id, ref text);
|
||||
var sendGreetEnabled = ServerGreetCommands.SetGreetDmMessage(Context.Guild.Id, ref text);
|
||||
|
||||
await channel.SendConfirmAsync("🆗 New DM greet message **set**.").ConfigureAwait(false);
|
||||
await Context.Channel.SendConfirmAsync("🆗 New DM greet message **set**.").ConfigureAwait(false);
|
||||
if (!sendGreetEnabled)
|
||||
await channel.SendConfirmAsync($"ℹ️ Enable DM greet messsages by typing `{NadekoBot.ModulePrefixes[typeof(Administration).Name]}greetdm`").ConfigureAwait(false);
|
||||
await Context.Channel.SendConfirmAsync($"ℹ️ Enable DM greet messsages by typing `{NadekoBot.ModulePrefixes[typeof(Administration).Name]}greetdm`").ConfigureAwait(false);
|
||||
}
|
||||
|
||||
public static bool SetGreetDmMessage(ulong guildId, ref string message)
|
||||
@ -303,14 +303,14 @@ namespace NadekoBot.Modules.Administration
|
||||
[RequireUserPermission(GuildPermission.ManageGuild)]
|
||||
public async Task Bye()
|
||||
{
|
||||
var channel = (ITextChannel)Context.Channel;
|
||||
//var channel = (ITextChannel)Context.Channel;
|
||||
|
||||
var enabled = await ServerGreetCommands.SetBye(channel.Guild.Id, channel.Id).ConfigureAwait(false);
|
||||
var enabled = await ServerGreetCommands.SetBye(Context.Guild.Id, channel.Id).ConfigureAwait(false);
|
||||
|
||||
if (enabled)
|
||||
await channel.SendConfirmAsync("✅ Bye announcements **enabled** on this channel.").ConfigureAwait(false);
|
||||
await Context.Channel.SendConfirmAsync("✅ Bye announcements **enabled** on this channel.").ConfigureAwait(false);
|
||||
else
|
||||
await channel.SendConfirmAsync("ℹ️ Bye announcements **disabled**.").ConfigureAwait(false);
|
||||
await Context.Channel.SendConfirmAsync("ℹ️ Bye announcements **disabled**.").ConfigureAwait(false);
|
||||
}
|
||||
|
||||
private static async Task<bool> SetBye(ulong guildId, ulong channelId, bool? value = null)
|
||||
@ -332,24 +332,24 @@ namespace NadekoBot.Modules.Administration
|
||||
[RequireUserPermission(GuildPermission.ManageGuild)]
|
||||
public async Task ByeMsg(IUserMessage umsg, [Remainder] string text = null)
|
||||
{
|
||||
var channel = (ITextChannel)Context.Channel;
|
||||
//var channel = (ITextChannel)Context.Channel;
|
||||
|
||||
if (string.IsNullOrWhiteSpace(text))
|
||||
{
|
||||
string byeMessageText;
|
||||
using (var uow = DbHandler.UnitOfWork())
|
||||
{
|
||||
byeMessageText = uow.GuildConfigs.For(channel.Guild.Id, set => set).ChannelByeMessageText;
|
||||
byeMessageText = uow.GuildConfigs.For(Context.Guild.Id, set => set).ChannelByeMessageText;
|
||||
}
|
||||
await channel.SendConfirmAsync("ℹ️ Current **bye** message: `" + byeMessageText?.SanitizeMentions() + "`");
|
||||
await Context.Channel.SendConfirmAsync("ℹ️ Current **bye** message: `" + byeMessageText?.SanitizeMentions() + "`");
|
||||
return;
|
||||
}
|
||||
|
||||
var sendByeEnabled = ServerGreetCommands.SetByeMessage(channel.Guild.Id, ref text);
|
||||
var sendByeEnabled = ServerGreetCommands.SetByeMessage(Context.Guild.Id, ref text);
|
||||
|
||||
await channel.SendConfirmAsync("🆗 New bye message **set**.").ConfigureAwait(false);
|
||||
await Context.Channel.SendConfirmAsync("🆗 New bye message **set**.").ConfigureAwait(false);
|
||||
if (!sendByeEnabled)
|
||||
await channel.SendConfirmAsync($"ℹ️ Enable bye messsages by typing `{NadekoBot.ModulePrefixes[typeof(Administration).Name]}bye`").ConfigureAwait(false);
|
||||
await Context.Channel.SendConfirmAsync($"ℹ️ Enable bye messsages by typing `{NadekoBot.ModulePrefixes[typeof(Administration).Name]}bye`").ConfigureAwait(false);
|
||||
}
|
||||
|
||||
public static bool SetByeMessage(ulong guildId, ref string message)
|
||||
@ -376,14 +376,14 @@ namespace NadekoBot.Modules.Administration
|
||||
[RequireUserPermission(GuildPermission.ManageGuild)]
|
||||
public async Task ByeDel(IUserMessage umsg, int timer = 30)
|
||||
{
|
||||
var channel = (ITextChannel)Context.Channel;
|
||||
//var channel = (ITextChannel)Context.Channel;
|
||||
|
||||
await ServerGreetCommands.SetByeDel(channel.Guild.Id, timer).ConfigureAwait(false);
|
||||
await ServerGreetCommands.SetByeDel(Context.Guild.Id, timer).ConfigureAwait(false);
|
||||
|
||||
if (timer > 0)
|
||||
await channel.SendConfirmAsync($"🆗 Bye messages **will be deleted** after `{timer} seconds`.").ConfigureAwait(false);
|
||||
await Context.Channel.SendConfirmAsync($"🆗 Bye messages **will be deleted** after `{timer} seconds`.").ConfigureAwait(false);
|
||||
else
|
||||
await channel.SendConfirmAsync("ℹ️ Automatic deletion of bye messages has been **disabled**.").ConfigureAwait(false);
|
||||
await Context.Channel.SendConfirmAsync("ℹ️ Automatic deletion of bye messages has been **disabled**.").ConfigureAwait(false);
|
||||
}
|
||||
|
||||
private static async Task SetByeDel(ulong id, int timer)
|
||||
|
@ -110,13 +110,13 @@ namespace NadekoBot.Modules.Administration
|
||||
[RequireUserPermission(GuildPermission.ManageChannels)]
|
||||
public async Task VoicePlusText()
|
||||
{
|
||||
var channel = (ITextChannel)Context.Channel;
|
||||
var guild = channel.Guild;
|
||||
//var channel = (ITextChannel)Context.Channel;
|
||||
var guild = Context.Guild;
|
||||
|
||||
var botUser = await guild.GetCurrentUserAsync().ConfigureAwait(false);
|
||||
if (!botUser.GuildPermissions.ManageRoles || !botUser.GuildPermissions.ManageChannels)
|
||||
{
|
||||
await channel.SendErrorAsync("I require atleast **manage roles** and **manage channels permissions** to enable this feature. `(preffered Administration permission)`");
|
||||
await Context.Channel.SendErrorAsync("I require atleast **manage roles** and **manage channels permissions** to enable this feature. `(preffered Administration permission)`");
|
||||
return;
|
||||
}
|
||||
|
||||
@ -124,7 +124,7 @@ namespace NadekoBot.Modules.Administration
|
||||
{
|
||||
try
|
||||
{
|
||||
await channel.SendErrorAsync("⚠️ You are enabling this feature and **I do not have ADMINISTRATOR permissions**. " +
|
||||
await Context.Channel.SendErrorAsync("⚠️ You are enabling this feature and **I do not have ADMINISTRATOR permissions**. " +
|
||||
"`This may cause some issues, and you will have to clean up text channels yourself afterwards.`");
|
||||
}
|
||||
catch { }
|
||||
@ -145,16 +145,16 @@ namespace NadekoBot.Modules.Administration
|
||||
{
|
||||
try { await textChannel.DeleteAsync().ConfigureAwait(false); } catch { }
|
||||
}
|
||||
await channel.SendConfirmAsync("ℹ️ Successfuly **removed** voice + text feature.").ConfigureAwait(false);
|
||||
await Context.Channel.SendConfirmAsync("ℹ️ Successfuly **removed** voice + text feature.").ConfigureAwait(false);
|
||||
return;
|
||||
}
|
||||
voicePlusTextCache.Add(guild.Id);
|
||||
await channel.SendConfirmAsync("🆗 Successfuly **enabled** voice + text feature.").ConfigureAwait(false);
|
||||
await Context.Channel.SendConfirmAsync("🆗 Successfuly **enabled** voice + text feature.").ConfigureAwait(false);
|
||||
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
await channel.SendErrorAsync(ex.ToString()).ConfigureAwait(false);
|
||||
await Context.Channel.SendErrorAsync(ex.ToString()).ConfigureAwait(false);
|
||||
}
|
||||
}
|
||||
[NadekoCommand, Usage, Description, Aliases]
|
||||
@ -163,12 +163,12 @@ namespace NadekoBot.Modules.Administration
|
||||
[RequireUserPermission(GuildPermission.ManageRoles)]
|
||||
public async Task CleanVPlusT()
|
||||
{
|
||||
var channel = (ITextChannel)Context.Channel;
|
||||
var guild = channel.Guild;
|
||||
//var channel = (ITextChannel)Context.Channel;
|
||||
var guild = Context.Guild;
|
||||
var botUser = await guild.GetCurrentUserAsync().ConfigureAwait(false);
|
||||
if (!botUser.GuildPermissions.Administrator)
|
||||
{
|
||||
await channel.SendErrorAsync("I need **Administrator permission** to do that.").ConfigureAwait(false);
|
||||
await Context.Channel.SendErrorAsync("I need **Administrator permission** to do that.").ConfigureAwait(false);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -183,7 +183,7 @@ namespace NadekoBot.Modules.Administration
|
||||
await Task.Delay(500);
|
||||
}
|
||||
|
||||
await channel.SendConfirmAsync("Cleaned v+t.").ConfigureAwait(false);
|
||||
await Context.Channel.SendConfirmAsync("Cleaned v+t.").ConfigureAwait(false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -59,7 +59,7 @@ namespace NadekoBot.Modules.ClashOfClans
|
||||
[RequireContext(ContextType.Guild)]
|
||||
public async Task CreateWar(IUserMessage umsg, int size, [Remainder] string enemyClan = null)
|
||||
{
|
||||
var channel = (ITextChannel)Context.Channel;
|
||||
//var channel = (ITextChannel)Context.Channel;
|
||||
|
||||
if (!(Context.User as IGuildUser).GuildPermissions.ManageChannels)
|
||||
return;
|
||||
@ -69,29 +69,32 @@ namespace NadekoBot.Modules.ClashOfClans
|
||||
|
||||
if (size < 10 || size > 50 || size % 5 != 0)
|
||||
{
|
||||
await channel.SendErrorAsync("🔰 Not a Valid war size").ConfigureAwait(false);
|
||||
await Context.Channel.SendErrorAsync("🔰 Not a Valid war size").ConfigureAwait(false);
|
||||
return;
|
||||
}
|
||||
List<ClashWar> wars;
|
||||
if (!ClashWars.TryGetValue(channel.Guild.Id, out wars))
|
||||
//if (!ClashWars.TryGetValue(channel.Guild.Id, out wars))
|
||||
if (!ClashWars.TryGetValue(Context.Guild.Id, out wars))
|
||||
{
|
||||
wars = new List<ClashWar>();
|
||||
if (!ClashWars.TryAdd(channel.Guild.Id, wars))
|
||||
if (!ClashWars.TryAdd(Context.Guild.Id, wars))
|
||||
//if (!ClashWars.TryAdd(channel.Guild.Id, wars))
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
var cw = await CreateWar(enemyClan, size, channel.Guild.Id, Context.Channel.Id);
|
||||
var cw = await CreateWar(enemyClan, size, Context.Guild.Id, Context.Channel.Id);
|
||||
//var cw = await CreateWar(enemyClan, size, channel.Guild.Id, Context.Channel.Id);
|
||||
|
||||
wars.Add(cw);
|
||||
await channel.SendConfirmAsync($"❗🔰**CREATED CLAN WAR AGAINST {cw.ShortPrint()}**").ConfigureAwait(false);
|
||||
await Context.Channel.SendConfirmAsync($"❗🔰**CREATED CLAN WAR AGAINST {cw.ShortPrint()}**").ConfigureAwait(false);
|
||||
}
|
||||
|
||||
[NadekoCommand, Usage, Description, Aliases]
|
||||
[RequireContext(ContextType.Guild)]
|
||||
public async Task StartWar(IUserMessage umsg, [Remainder] string number = null)
|
||||
{
|
||||
var channel = (ITextChannel)Context.Channel;
|
||||
//var channel = (ITextChannel)Context.Channel;
|
||||
|
||||
int num = 0;
|
||||
int.TryParse(number, out num);
|
||||
@ -99,18 +102,18 @@ namespace NadekoBot.Modules.ClashOfClans
|
||||
var warsInfo = GetWarInfo(umsg, num);
|
||||
if (warsInfo == null)
|
||||
{
|
||||
await channel.SendErrorAsync("🔰 **That war does not exist.**").ConfigureAwait(false);
|
||||
await Context.Channel.SendErrorAsync("🔰 **That war does not exist.**").ConfigureAwait(false);
|
||||
return;
|
||||
}
|
||||
var war = warsInfo.Item1[warsInfo.Item2];
|
||||
try
|
||||
{
|
||||
war.Start();
|
||||
await channel.SendConfirmAsync($"🔰**STARTED WAR AGAINST {war.ShortPrint()}**").ConfigureAwait(false);
|
||||
await Context.Channel.SendConfirmAsync($"🔰**STARTED WAR AGAINST {war.ShortPrint()}**").ConfigureAwait(false);
|
||||
}
|
||||
catch
|
||||
{
|
||||
await channel.SendErrorAsync($"🔰**WAR AGAINST {war.ShortPrint()} HAS ALREADY STARTED**").ConfigureAwait(false);
|
||||
await Context.Channel.SendErrorAsync($"🔰**WAR AGAINST {war.ShortPrint()} HAS ALREADY STARTED**").ConfigureAwait(false);
|
||||
}
|
||||
SaveWar(war);
|
||||
}
|
||||
@ -119,17 +122,18 @@ namespace NadekoBot.Modules.ClashOfClans
|
||||
[RequireContext(ContextType.Guild)]
|
||||
public async Task ListWar(IUserMessage umsg, [Remainder] string number = null)
|
||||
{
|
||||
var channel = (ITextChannel)Context.Channel;
|
||||
//var channel = (ITextChannel)Context.Channel;
|
||||
|
||||
// if number is null, print all wars in a short way
|
||||
if (string.IsNullOrWhiteSpace(number))
|
||||
{
|
||||
//check if there are any wars
|
||||
List<ClashWar> wars = null;
|
||||
ClashWars.TryGetValue(channel.Guild.Id, out wars);
|
||||
ClashWars.TryGetValue(Context.Guild.Id, out wars);
|
||||
//ClashWars.TryGetValue(channel.Guild.Id, out wars);
|
||||
if (wars == null || wars.Count == 0)
|
||||
{
|
||||
await channel.SendErrorAsync("🔰 **No active wars.**").ConfigureAwait(false);
|
||||
await Context.Channel.SendErrorAsync("🔰 **No active wars.**").ConfigureAwait(false);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -142,7 +146,7 @@ namespace NadekoBot.Modules.ClashOfClans
|
||||
sb.AppendLine($"\t\t`Size:` **{wars[i].Size} v {wars[i].Size}**");
|
||||
sb.AppendLine("**-------------------------**");
|
||||
}
|
||||
await channel.SendConfirmAsync(sb.ToString()).ConfigureAwait(false);
|
||||
await Context.Channel.SendConfirmAsync(sb.ToString()).ConfigureAwait(false);
|
||||
return;
|
||||
|
||||
}
|
||||
@ -152,21 +156,21 @@ namespace NadekoBot.Modules.ClashOfClans
|
||||
var warsInfo = GetWarInfo(umsg, num);
|
||||
if (warsInfo == null)
|
||||
{
|
||||
await channel.SendErrorAsync("🔰 **That war does not exist.**").ConfigureAwait(false);
|
||||
await Context.Channel.SendErrorAsync("🔰 **That war does not exist.**").ConfigureAwait(false);
|
||||
return;
|
||||
}
|
||||
await channel.SendConfirmAsync(warsInfo.Item1[warsInfo.Item2].ToPrettyString()).ConfigureAwait(false);
|
||||
await Context.Channel.SendConfirmAsync(warsInfo.Item1[warsInfo.Item2].ToPrettyString()).ConfigureAwait(false);
|
||||
}
|
||||
|
||||
[NadekoCommand, Usage, Description, Aliases]
|
||||
[RequireContext(ContextType.Guild)]
|
||||
public async Task Claim(IUserMessage umsg, int number, int baseNumber, [Remainder] string other_name = null)
|
||||
{
|
||||
var channel = (ITextChannel)Context.Channel;
|
||||
//var channel = (ITextChannel)Context.Channel;
|
||||
var warsInfo = GetWarInfo(umsg, number);
|
||||
if (warsInfo == null || warsInfo.Item1.Count == 0)
|
||||
{
|
||||
await channel.SendErrorAsync("🔰 **That war does not exist.**").ConfigureAwait(false);
|
||||
await Context.Channel.SendErrorAsync("🔰 **That war does not exist.**").ConfigureAwait(false);
|
||||
return;
|
||||
}
|
||||
var usr =
|
||||
@ -178,11 +182,11 @@ namespace NadekoBot.Modules.ClashOfClans
|
||||
var war = warsInfo.Item1[warsInfo.Item2];
|
||||
war.Call(usr, baseNumber - 1);
|
||||
SaveWar(war);
|
||||
await channel.SendConfirmAsync($"🔰**{usr}** claimed a base #{baseNumber} for a war against {war.ShortPrint()}").ConfigureAwait(false);
|
||||
await Context.Channel.SendConfirmAsync($"🔰**{usr}** claimed a base #{baseNumber} for a war against {war.ShortPrint()}").ConfigureAwait(false);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
await channel.SendErrorAsync($"🔰 {ex.Message}").ConfigureAwait(false);
|
||||
await Context.Channel.SendErrorAsync($"🔰 {ex.Message}").ConfigureAwait(false);
|
||||
}
|
||||
}
|
||||
|
||||
@ -190,7 +194,7 @@ namespace NadekoBot.Modules.ClashOfClans
|
||||
[RequireContext(ContextType.Guild)]
|
||||
public async Task ClaimFinish1(IUserMessage umsg, int number, int baseNumber = 0)
|
||||
{
|
||||
var channel = (ITextChannel)Context.Channel;
|
||||
//var channel = (ITextChannel)Context.Channel;
|
||||
await FinishClaim(umsg, number, baseNumber - 1, 1);
|
||||
}
|
||||
|
||||
@ -198,7 +202,7 @@ namespace NadekoBot.Modules.ClashOfClans
|
||||
[RequireContext(ContextType.Guild)]
|
||||
public async Task ClaimFinish2(IUserMessage umsg, int number, int baseNumber = 0)
|
||||
{
|
||||
var channel = (ITextChannel)Context.Channel;
|
||||
//var channel = (ITextChannel)Context.Channel;
|
||||
await FinishClaim(umsg, number, baseNumber - 1, 2);
|
||||
}
|
||||
|
||||
@ -206,7 +210,7 @@ namespace NadekoBot.Modules.ClashOfClans
|
||||
[RequireContext(ContextType.Guild)]
|
||||
public async Task ClaimFinish(IUserMessage umsg, int number, int baseNumber = 0)
|
||||
{
|
||||
var channel = (ITextChannel)Context.Channel;
|
||||
//var channel = (ITextChannel)Context.Channel;
|
||||
await FinishClaim(umsg, number, baseNumber - 1);
|
||||
}
|
||||
|
||||
@ -214,18 +218,18 @@ namespace NadekoBot.Modules.ClashOfClans
|
||||
[RequireContext(ContextType.Guild)]
|
||||
public async Task EndWar(IUserMessage umsg, int number)
|
||||
{
|
||||
var channel = (ITextChannel)Context.Channel;
|
||||
//var channel = (ITextChannel)Context.Channel;
|
||||
|
||||
var warsInfo = GetWarInfo(umsg,number);
|
||||
if (warsInfo == null)
|
||||
{
|
||||
await channel.SendErrorAsync("🔰 That war does not exist.").ConfigureAwait(false);
|
||||
await Context.Channel.SendErrorAsync("🔰 That war does not exist.").ConfigureAwait(false);
|
||||
return;
|
||||
}
|
||||
var war = warsInfo.Item1[warsInfo.Item2];
|
||||
war.End();
|
||||
SaveWar(war);
|
||||
await channel.SendConfirmAsync($"❗🔰**War against {warsInfo.Item1[warsInfo.Item2].ShortPrint()} ended.**").ConfigureAwait(false);
|
||||
await Context.Channel.SendConfirmAsync($"❗🔰**War against {warsInfo.Item1[warsInfo.Item2].ShortPrint()} ended.**").ConfigureAwait(false);
|
||||
|
||||
var size = warsInfo.Item1[warsInfo.Item2].Size;
|
||||
warsInfo.Item1.RemoveAt(warsInfo.Item2);
|
||||
@ -235,12 +239,12 @@ namespace NadekoBot.Modules.ClashOfClans
|
||||
[RequireContext(ContextType.Guild)]
|
||||
public async Task Unclaim(IUserMessage umsg, int number, [Remainder] string otherName = null)
|
||||
{
|
||||
var channel = (ITextChannel)Context.Channel;
|
||||
//var channel = (ITextChannel)Context.Channel;
|
||||
|
||||
var warsInfo = GetWarInfo(umsg, number);
|
||||
if (warsInfo == null || warsInfo.Item1.Count == 0)
|
||||
{
|
||||
await channel.SendErrorAsync("🔰 **That war does not exist.**").ConfigureAwait(false);
|
||||
await Context.Channel.SendErrorAsync("🔰 **That war does not exist.**").ConfigureAwait(false);
|
||||
return;
|
||||
}
|
||||
var usr =
|
||||
@ -252,21 +256,21 @@ namespace NadekoBot.Modules.ClashOfClans
|
||||
var war = warsInfo.Item1[warsInfo.Item2];
|
||||
var baseNumber = war.Uncall(usr);
|
||||
SaveWar(war);
|
||||
await channel.SendConfirmAsync($"🔰 @{usr} has **UNCLAIMED** a base #{baseNumber + 1} from a war against {war.ShortPrint()}").ConfigureAwait(false);
|
||||
await Context.Channel.SendConfirmAsync($"🔰 @{usr} has **UNCLAIMED** a base #{baseNumber + 1} from a war against {war.ShortPrint()}").ConfigureAwait(false);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
await channel.SendErrorAsync($"🔰 {ex.Message}").ConfigureAwait(false);
|
||||
await Context.Channel.SendErrorAsync($"🔰 {ex.Message}").ConfigureAwait(false);
|
||||
}
|
||||
}
|
||||
|
||||
private async Task FinishClaim(IUserMessage umsg, int number, int baseNumber, int stars = 3)
|
||||
{
|
||||
var channel = (ITextChannel)Context.Channel;
|
||||
//var channel = (ITextChannel)Context.Channel;
|
||||
var warInfo = GetWarInfo(umsg, number);
|
||||
if (warInfo == null || warInfo.Item1.Count == 0)
|
||||
{
|
||||
await channel.SendErrorAsync("🔰 **That war does not exist.**").ConfigureAwait(false);
|
||||
await Context.Channel.SendErrorAsync("🔰 **That war does not exist.**").ConfigureAwait(false);
|
||||
return;
|
||||
}
|
||||
var war = warInfo.Item1[warInfo.Item2];
|
||||
@ -281,20 +285,20 @@ namespace NadekoBot.Modules.ClashOfClans
|
||||
{
|
||||
war.FinishClaim(baseNumber, stars);
|
||||
}
|
||||
await channel.SendConfirmAsync($"❗🔰{Context.User.Mention} **DESTROYED** a base #{baseNumber + 1} in a war against {war.ShortPrint()}").ConfigureAwait(false);
|
||||
await Context.Channel.SendConfirmAsync($"❗🔰{Context.User.Mention} **DESTROYED** a base #{baseNumber + 1} in a war against {war.ShortPrint()}").ConfigureAwait(false);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
await channel.SendErrorAsync($"🔰 {ex.Message}").ConfigureAwait(false);
|
||||
await Context.Channel.SendErrorAsync($"🔰 {ex.Message}").ConfigureAwait(false);
|
||||
}
|
||||
}
|
||||
|
||||
private static Tuple<List<ClashWar>, int> GetWarInfo(IUserMessage umsg, int num)
|
||||
{
|
||||
var channel = (ITextChannel)Context.Channel;
|
||||
//var channel = (ITextChannel)Context.Channel;
|
||||
//check if there are any wars
|
||||
List<ClashWar> wars = null;
|
||||
ClashWars.TryGetValue(channel.Guild.Id, out wars);
|
||||
ClashWars.TryGetValue(Context.Guild.Id, out wars);
|
||||
if (wars == null || wars.Count == 0)
|
||||
{
|
||||
return null;
|
||||
|
@ -35,13 +35,14 @@ namespace NadekoBot.Modules.CustomReactions
|
||||
|
||||
public static async Task<bool> TryExecuteCustomReaction()
|
||||
{
|
||||
var channel = Context.Channel as ITextChannel;
|
||||
//var channel = Context.Channel as ITextChannel;
|
||||
if (channel == null)
|
||||
return false;
|
||||
|
||||
var content = umsg.Content.Trim().ToLowerInvariant();
|
||||
ConcurrentHashSet<CustomReaction> reactions;
|
||||
GuildReactions.TryGetValue(channel.Guild.Id, out reactions);
|
||||
//GuildReactions.TryGetValue(channel.Guild.Id, out reactions);
|
||||
GuildReactions.TryGetValue(Context.Guild.Id, out reactions);
|
||||
if (reactions != null && reactions.Any())
|
||||
{
|
||||
var reaction = reactions.Where(cr =>
|
||||
@ -53,7 +54,7 @@ namespace NadekoBot.Modules.CustomReactions
|
||||
if (reaction != null)
|
||||
{
|
||||
if (reaction.Response != "-")
|
||||
try { await channel.SendMessageAsync(reaction.ResponseWithContext(umsg)).ConfigureAwait(false); } catch { }
|
||||
try { await Context.Channel.SendMessageAsync(reaction.ResponseWithContext(umsg)).ConfigureAwait(false); } catch { }
|
||||
|
||||
ReactionStats.AddOrUpdate(reaction.Trigger, 1, (k, old) => ++old);
|
||||
return true;
|
||||
@ -68,7 +69,7 @@ namespace NadekoBot.Modules.CustomReactions
|
||||
|
||||
if (greaction != null)
|
||||
{
|
||||
try { await channel.SendMessageAsync(greaction.ResponseWithContext(umsg)).ConfigureAwait(false); } catch { }
|
||||
try { await Context.Channel.SendMessageAsync(greaction.ResponseWithContext(umsg)).ConfigureAwait(false); } catch { }
|
||||
ReactionStats.AddOrUpdate(greaction.Trigger, 1, (k, old) => ++old);
|
||||
return true;
|
||||
}
|
||||
@ -78,7 +79,7 @@ namespace NadekoBot.Modules.CustomReactions
|
||||
[NadekoCommand, Usage, Description, Aliases]
|
||||
public async Task AddCustReact(IUserMessage imsg, string key, [Remainder] string message)
|
||||
{
|
||||
var channel = Context.Channel as ITextChannel;
|
||||
//var channel = Context.Channel as ITextChannel;
|
||||
if (string.IsNullOrWhiteSpace(message) || string.IsNullOrWhiteSpace(key))
|
||||
return;
|
||||
|
||||
@ -111,7 +112,8 @@ namespace NadekoBot.Modules.CustomReactions
|
||||
}
|
||||
else
|
||||
{
|
||||
var reactions = GuildReactions.GetOrAdd(channel.Guild.Id, new ConcurrentHashSet<CustomReaction>());
|
||||
var reactions = GuildReactions.GetOrAdd(Context.Guild.Id, new ConcurrentHashSet<CustomReaction>());
|
||||
//var reactions = GuildReactions.GetOrAdd(channel.Guild.Id, new ConcurrentHashSet<CustomReaction>());
|
||||
reactions.Add(cr);
|
||||
}
|
||||
|
||||
@ -127,7 +129,7 @@ namespace NadekoBot.Modules.CustomReactions
|
||||
[Priority(0)]
|
||||
public async Task ListCustReact(IUserMessage imsg, int page = 1)
|
||||
{
|
||||
var channel = Context.Channel as ITextChannel;
|
||||
//var channel = Context.Channel as ITextChannel;
|
||||
|
||||
if (page < 1 || page > 1000)
|
||||
return;
|
||||
@ -135,7 +137,8 @@ namespace NadekoBot.Modules.CustomReactions
|
||||
if (channel == null)
|
||||
customReactions = GlobalReactions;
|
||||
else
|
||||
customReactions = GuildReactions.GetOrAdd(channel.Guild.Id, new ConcurrentHashSet<CustomReaction>());
|
||||
customReactions = GuildReactions.GetOrAdd(Context.Guild.Id, new ConcurrentHashSet<CustomReaction>());
|
||||
//customReactions = GuildReactions.GetOrAdd(channel.Guild.Id, new ConcurrentHashSet<CustomReaction>());
|
||||
|
||||
if (customReactions == null || !customReactions.Any())
|
||||
await Context.Channel.SendErrorAsync("No custom reactions found").ConfigureAwait(false);
|
||||
@ -158,13 +161,14 @@ namespace NadekoBot.Modules.CustomReactions
|
||||
[Priority(1)]
|
||||
public async Task ListCustReact(IUserMessage imsg, All x)
|
||||
{
|
||||
var channel = Context.Channel as ITextChannel;
|
||||
//var channel = Context.Channel as ITextChannel;
|
||||
|
||||
ConcurrentHashSet<CustomReaction> customReactions;
|
||||
if (channel == null)
|
||||
customReactions = GlobalReactions;
|
||||
else
|
||||
customReactions = GuildReactions.GetOrAdd(channel.Guild.Id, new ConcurrentHashSet<CustomReaction>());
|
||||
customReactions = GuildReactions.GetOrAdd(Context.Guild.Id, new ConcurrentHashSet<CustomReaction>());
|
||||
//customReactions = GuildReactions.GetOrAdd(channel.Guild.Id, new ConcurrentHashSet<CustomReaction>());
|
||||
|
||||
if (customReactions == null || !customReactions.Any())
|
||||
await Context.Channel.SendErrorAsync("No custom reactions found").ConfigureAwait(false);
|
||||
@ -186,14 +190,15 @@ namespace NadekoBot.Modules.CustomReactions
|
||||
[NadekoCommand, Usage, Description, Aliases]
|
||||
public async Task ListCustReactG(IUserMessage imsg, int page = 1)
|
||||
{
|
||||
var channel = Context.Channel as ITextChannel;
|
||||
//var channel = Context.Channel as ITextChannel;
|
||||
if (page < 1 || page > 10000)
|
||||
return;
|
||||
ConcurrentHashSet<CustomReaction> customReactions;
|
||||
if (channel == null)
|
||||
customReactions = GlobalReactions;
|
||||
else
|
||||
customReactions = GuildReactions.GetOrAdd(channel.Guild.Id, new ConcurrentHashSet<CustomReaction>());
|
||||
customReactions = GuildReactions.GetOrAdd(Context.Guild.Id, new ConcurrentHashSet<CustomReaction>());
|
||||
//customReactions = GuildReactions.GetOrAdd(channel.Guild.Id, new ConcurrentHashSet<CustomReaction>());
|
||||
|
||||
if (customReactions == null || !customReactions.Any())
|
||||
await Context.Channel.SendErrorAsync("No custom reactions found").ConfigureAwait(false);
|
||||
@ -211,13 +216,14 @@ namespace NadekoBot.Modules.CustomReactions
|
||||
[NadekoCommand, Usage, Description, Aliases]
|
||||
public async Task ShowCustReact(IUserMessage imsg, int id)
|
||||
{
|
||||
var channel = Context.Channel as ITextChannel;
|
||||
//var channel = Context.Channel as ITextChannel;
|
||||
|
||||
ConcurrentHashSet<CustomReaction> customReactions;
|
||||
if (channel == null)
|
||||
customReactions = GlobalReactions;
|
||||
else
|
||||
customReactions = GuildReactions.GetOrAdd(channel.Guild.Id, new ConcurrentHashSet<CustomReaction>());
|
||||
customReactions = GuildReactions.GetOrAdd(Context.Guild.Id, new ConcurrentHashSet<CustomReaction>());
|
||||
//customReactions = GuildReactions.GetOrAdd(channel.Guild.Id, new ConcurrentHashSet<CustomReaction>());
|
||||
|
||||
var found = customReactions.FirstOrDefault(cr => cr.Id == id);
|
||||
|
||||
@ -236,7 +242,7 @@ namespace NadekoBot.Modules.CustomReactions
|
||||
[NadekoCommand, Usage, Description, Aliases]
|
||||
public async Task DelCustReact(IUserMessage imsg, int id)
|
||||
{
|
||||
var channel = Context.Channel as ITextChannel;
|
||||
//var channel = Context.Channel as ITextChannel;
|
||||
|
||||
if ((channel == null && !NadekoBot.Credentials.IsOwner(Context.User)) || (channel != null && !((IGuildUser)Context.User).GuildPermissions.Administrator))
|
||||
{
|
||||
@ -261,7 +267,8 @@ namespace NadekoBot.Modules.CustomReactions
|
||||
else if ((toDelete.GuildId != null && toDelete.GuildId != 0) && channel?.Guild.Id == toDelete.GuildId)
|
||||
{
|
||||
uow.CustomReactions.Remove(toDelete);
|
||||
GuildReactions.GetOrAdd(channel.Guild.Id, new ConcurrentHashSet<CustomReaction>()).RemoveWhere(cr => cr.Id == toDelete.Id);
|
||||
GuildReactions.GetOrAdd(Context.Guild.Id, new ConcurrentHashSet<CustomReaction>()).RemoveWhere(cr => cr.Id == toDelete.Id);
|
||||
//GuildReactions.GetOrAdd(channel.Guild.Id, new ConcurrentHashSet<CustomReaction>()).RemoveWhere(cr => cr.Id == toDelete.Id);
|
||||
success = true;
|
||||
}
|
||||
if (success)
|
||||
|
@ -24,28 +24,28 @@ namespace NadekoBot.Modules.Gambling
|
||||
[RequireContext(ContextType.Guild)]
|
||||
public async Task Race()
|
||||
{
|
||||
var channel = (ITextChannel)Context.Channel;
|
||||
//var channel = (ITextChannel)Context.Channel;
|
||||
|
||||
var ar = new AnimalRace(channel.Guild.Id, channel);
|
||||
var ar = new AnimalRace(Context.Guild.Id, channel);
|
||||
|
||||
if (ar.Fail)
|
||||
await channel.SendErrorAsync("🏁 `Failed starting a race. Another race is probably running.`");
|
||||
await Context.Channel.SendErrorAsync("🏁 `Failed starting a race. Another race is probably running.`");
|
||||
}
|
||||
|
||||
[NadekoCommand, Usage, Description, Aliases]
|
||||
[RequireContext(ContextType.Guild)]
|
||||
public async Task JoinRace(IUserMessage umsg, int amount = 0)
|
||||
{
|
||||
var channel = (ITextChannel)Context.Channel;
|
||||
//var channel = (ITextChannel)Context.Channel;
|
||||
|
||||
if (amount < 0)
|
||||
amount = 0;
|
||||
|
||||
|
||||
AnimalRace ar;
|
||||
if (!AnimalRaces.TryGetValue(channel.Guild.Id, out ar))
|
||||
if (!AnimalRaces.TryGetValue(Context.Guild.Id, out ar))
|
||||
{
|
||||
await channel.SendErrorAsync("No race exists on this server");
|
||||
await Context.Channel.SendErrorAsync("No race exists on this server");
|
||||
return;
|
||||
}
|
||||
await ar.JoinRace(Context.User as IGuildUser, amount);
|
||||
|
@ -24,7 +24,7 @@ namespace NadekoBot.Modules.Gambling
|
||||
[RequireContext(ContextType.Guild)]
|
||||
public async Task Roll()
|
||||
{
|
||||
var channel = (ITextChannel)Context.Channel;
|
||||
//var channel = (ITextChannel)Context.Channel;
|
||||
if (channel == null)
|
||||
return;
|
||||
var rng = new NadekoRandom();
|
||||
@ -44,7 +44,7 @@ namespace NadekoBot.Modules.Gambling
|
||||
catch { return new MemoryStream(); }
|
||||
});
|
||||
|
||||
await channel.SendFileAsync(imageStream, "dice.png", $"{Context.User.Mention} rolled " + Format.Code(gen.ToString())).ConfigureAwait(false);
|
||||
await Context.Channel.SendFileAsync(imageStream, "dice.png", $"{Context.User.Mention} rolled " + Format.Code(gen.ToString())).ConfigureAwait(false);
|
||||
}
|
||||
//todo merge into internallDndRoll and internalRoll
|
||||
[NadekoCommand, Usage, Description, Aliases]
|
||||
@ -52,7 +52,7 @@ namespace NadekoBot.Modules.Gambling
|
||||
[Priority(1)]
|
||||
public async Task Roll(IUserMessage umsg, string arg)
|
||||
{
|
||||
var channel = (ITextChannel)Context.Channel;
|
||||
//var channel = (ITextChannel)Context.Channel;
|
||||
if (channel == null)
|
||||
return;
|
||||
|
||||
@ -78,7 +78,7 @@ namespace NadekoBot.Modules.Gambling
|
||||
arr[i] = rng.Next(1, n2 + 1) + add - sub;
|
||||
}
|
||||
var elemCnt = 0;
|
||||
await channel.SendConfirmAsync($"{Context.User.Mention} rolled {n1} {(n1 == 1 ? "die" : "dice")} `1 to {n2}` +`{add}` -`{sub}`.\n`Result:` " + string.Join(", ", (ordered ? arr.OrderBy(x => x).AsEnumerable() : arr).Select(x => elemCnt++ % 2 == 0 ? $"**{x}**" : x.ToString()))).ConfigureAwait(false);
|
||||
await Context.Channel.SendConfirmAsync($"{Context.User.Mention} rolled {n1} {(n1 == 1 ? "die" : "dice")} `1 to {n2}` +`{add}` -`{sub}`.\n`Result:` " + string.Join(", ", (ordered ? arr.OrderBy(x => x).AsEnumerable() : arr).Select(x => elemCnt++ % 2 == 0 ? $"**{x}**" : x.ToString()))).ConfigureAwait(false);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -88,7 +88,7 @@ namespace NadekoBot.Modules.Gambling
|
||||
[Priority(0)]
|
||||
public async Task Roll(IUserMessage umsg, int num)
|
||||
{
|
||||
var channel = (ITextChannel)Context.Channel;
|
||||
//var channel = (ITextChannel)Context.Channel;
|
||||
if (channel == null)
|
||||
return;
|
||||
|
||||
@ -96,7 +96,7 @@ namespace NadekoBot.Modules.Gambling
|
||||
|
||||
if (num < 1 || num > 30)
|
||||
{
|
||||
await channel.SendErrorAsync("Invalid number specified. You can roll up to 1-30 dice at a time.").ConfigureAwait(false);
|
||||
await Context.Channel.SendErrorAsync("Invalid number specified. You can roll up to 1-30 dice at a time.").ConfigureAwait(false);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -134,14 +134,14 @@ namespace NadekoBot.Modules.Gambling
|
||||
var ms = new MemoryStream();
|
||||
bitmap.SaveAsPng(ms);
|
||||
ms.Position = 0;
|
||||
await channel.SendFileAsync(ms, "dice.png", $"{Context.User.Mention} rolled {values.Count} {(values.Count == 1 ? "die" : "dice")}. Total: **{values.Sum()}** Average: **{(values.Sum() / (1.0f * values.Count)).ToString("N2")}**").ConfigureAwait(false);
|
||||
await Context.Channel.SendFileAsync(ms, "dice.png", $"{Context.User.Mention} rolled {values.Count} {(values.Count == 1 ? "die" : "dice")}. Total: **{values.Sum()}** Average: **{(values.Sum() / (1.0f * values.Count)).ToString("N2")}**").ConfigureAwait(false);
|
||||
}
|
||||
|
||||
[NadekoCommand, Usage, Description, Aliases]
|
||||
[RequireContext(ContextType.Guild)]
|
||||
public async Task Rolluo(IUserMessage umsg, string arg)
|
||||
{
|
||||
var channel = (ITextChannel)Context.Channel;
|
||||
//var channel = (ITextChannel)Context.Channel;
|
||||
if (channel == null)
|
||||
return;
|
||||
|
||||
@ -167,7 +167,7 @@ namespace NadekoBot.Modules.Gambling
|
||||
arr[i] = rng.Next(1, n2 + 1) + add - sub;
|
||||
}
|
||||
var elemCnt = 0;
|
||||
await channel.SendConfirmAsync($"{Context.User.Mention} rolled {n1} {(n1 == 1 ? "die" : "dice")} `1 to {n2}` +`{add}` -`{sub}`.\n`Result:` " + string.Join(", ", (ordered ? arr.OrderBy(x => x).AsEnumerable() : arr).Select(x => elemCnt++ % 2 == 0 ? $"**{x}**" : x.ToString()))).ConfigureAwait(false);
|
||||
await Context.Channel.SendConfirmAsync($"{Context.User.Mention} rolled {n1} {(n1 == 1 ? "die" : "dice")} `1 to {n2}` +`{add}` -`{sub}`.\n`Result:` " + string.Join(", ", (ordered ? arr.OrderBy(x => x).AsEnumerable() : arr).Select(x => elemCnt++ % 2 == 0 ? $"**{x}**" : x.ToString()))).ConfigureAwait(false);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -176,7 +176,7 @@ namespace NadekoBot.Modules.Gambling
|
||||
[RequireContext(ContextType.Guild)]
|
||||
public async Task Rolluo(IUserMessage umsg, int num)
|
||||
{
|
||||
var channel = (ITextChannel)Context.Channel;
|
||||
//var channel = (ITextChannel)Context.Channel;
|
||||
if (channel == null)
|
||||
return;
|
||||
|
||||
@ -184,7 +184,7 @@ namespace NadekoBot.Modules.Gambling
|
||||
|
||||
if (num < 1 || num > 30)
|
||||
{
|
||||
await channel.SendErrorAsync("Invalid number specified. You can roll up to 1-30 dice at a time.").ConfigureAwait(false);
|
||||
await Context.Channel.SendErrorAsync("Invalid number specified. You can roll up to 1-30 dice at a time.").ConfigureAwait(false);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -222,14 +222,14 @@ namespace NadekoBot.Modules.Gambling
|
||||
var ms = new MemoryStream();
|
||||
bitmap.SaveAsPng(ms);
|
||||
ms.Position = 0;
|
||||
await channel.SendFileAsync(ms, "dice.png", $"{Context.User.Mention} rolled {values.Count} {(values.Count == 1 ? "die" : "dice")}. Total: **{values.Sum()}** Average: **{(values.Sum() / (1.0f * values.Count)).ToString("N2")}**").ConfigureAwait(false);
|
||||
await Context.Channel.SendFileAsync(ms, "dice.png", $"{Context.User.Mention} rolled {values.Count} {(values.Count == 1 ? "die" : "dice")}. Total: **{values.Sum()}** Average: **{(values.Sum() / (1.0f * values.Count)).ToString("N2")}**").ConfigureAwait(false);
|
||||
}
|
||||
|
||||
[NadekoCommand, Usage, Description, Aliases]
|
||||
[RequireContext(ContextType.Guild)]
|
||||
public async Task NRoll(IUserMessage umsg, [Remainder] string range)
|
||||
{
|
||||
var channel = (ITextChannel)Context.Channel;
|
||||
//var channel = (ITextChannel)Context.Channel;
|
||||
|
||||
try
|
||||
{
|
||||
@ -249,11 +249,11 @@ namespace NadekoBot.Modules.Gambling
|
||||
rolled = new NadekoRandom().Next(0, int.Parse(range) + 1);
|
||||
}
|
||||
|
||||
await channel.SendConfirmAsync($"{Context.User.Mention} rolled **{rolled}**.").ConfigureAwait(false);
|
||||
await Context.Channel.SendConfirmAsync($"{Context.User.Mention} rolled **{rolled}**.").ConfigureAwait(false);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
await channel.SendErrorAsync($":anger: {ex.Message}").ConfigureAwait(false);
|
||||
await Context.Channel.SendErrorAsync($":anger: {ex.Message}").ConfigureAwait(false);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -33,8 +33,8 @@ namespace NadekoBot.Modules.Gambling
|
||||
[RequireContext(ContextType.Guild)]
|
||||
public async Task Draw(int num = 1)
|
||||
{
|
||||
var channel = (ITextChannel)Context.Channel;
|
||||
var cards = AllDecks.GetOrAdd(channel.Guild, (s) => new Cards());
|
||||
//var channel = (ITextChannel)Context.Channel;
|
||||
var cards = AllDecks.GetOrAdd(Context.Guild, (s) => new Cards());
|
||||
var images = new List<Image>();
|
||||
var cardObjects = new List<Cards.Card>();
|
||||
if (num > 5) num = 5;
|
||||
@ -42,7 +42,7 @@ namespace NadekoBot.Modules.Gambling
|
||||
{
|
||||
if (cards.CardPool.Count == 0 && i != 0)
|
||||
{
|
||||
try { await channel.SendErrorAsync("No more cards in a deck.").ConfigureAwait(false); } catch (Exception ex) { _log.Warn(ex); }
|
||||
try { await Context.Channel.SendErrorAsync("No more cards in a deck.").ConfigureAwait(false); } catch (Exception ex) { _log.Warn(ex); }
|
||||
break;
|
||||
}
|
||||
var currentCard = cards.DrawACard();
|
||||
@ -58,16 +58,16 @@ namespace NadekoBot.Modules.Gambling
|
||||
if (cardObjects.Count == 5)
|
||||
toSend += $" drew `{Cards.GetHandValue(cardObjects)}`";
|
||||
|
||||
await channel.SendFileAsync(bitmapStream, images.Count + " cards.jpg", toSend).ConfigureAwait(false);
|
||||
await Context.Channel.SendFileAsync(bitmapStream, images.Count + " cards.jpg", toSend).ConfigureAwait(false);
|
||||
}
|
||||
|
||||
[NadekoCommand, Usage, Description, Aliases]
|
||||
[RequireContext(ContextType.Guild)]
|
||||
public async Task ShuffleDeck()
|
||||
{
|
||||
var channel = (ITextChannel)Context.Channel;
|
||||
//var channel = (ITextChannel)Context.Channel;
|
||||
|
||||
AllDecks.AddOrUpdate(channel.Guild,
|
||||
AllDecks.AddOrUpdate(Context.Guild,
|
||||
(g) => new Cards(),
|
||||
(g, c) =>
|
||||
{
|
||||
@ -75,7 +75,7 @@ namespace NadekoBot.Modules.Gambling
|
||||
return c;
|
||||
});
|
||||
|
||||
await channel.SendConfirmAsync("Deck reshuffled.").ConfigureAwait(false);
|
||||
await Context.Channel.SendConfirmAsync("Deck reshuffled.").ConfigureAwait(false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -23,18 +23,18 @@ namespace NadekoBot.Modules.Gambling
|
||||
[RequireContext(ContextType.Guild)]
|
||||
public async Task Flip(IUserMessage imsg, int count = 1)
|
||||
{
|
||||
var channel = (ITextChannel)Context.Channel;
|
||||
//var channel = (ITextChannel)Context.Channel;
|
||||
if (count == 1)
|
||||
{
|
||||
if (rng.Next(0, 2) == 1)
|
||||
await channel.SendFileAsync(headsPath, $"{Context.User.Mention} flipped " + Format.Code("Heads") + ".").ConfigureAwait(false);
|
||||
await Context.Channel.SendFileAsync(headsPath, $"{Context.User.Mention} flipped " + Format.Code("Heads") + ".").ConfigureAwait(false);
|
||||
else
|
||||
await channel.SendFileAsync(tailsPath, $"{Context.User.Mention} flipped " + Format.Code("Tails") + ".").ConfigureAwait(false);
|
||||
await Context.Channel.SendFileAsync(tailsPath, $"{Context.User.Mention} flipped " + Format.Code("Tails") + ".").ConfigureAwait(false);
|
||||
return;
|
||||
}
|
||||
if (count > 10 || count < 1)
|
||||
{
|
||||
await channel.SendErrorAsync("`Invalid number specified. You can flip 1 to 10 coins.`");
|
||||
await Context.Channel.SendErrorAsync("`Invalid number specified. You can flip 1 to 10 coins.`");
|
||||
return;
|
||||
}
|
||||
var imgs = new Image[count];
|
||||
@ -44,14 +44,14 @@ namespace NadekoBot.Modules.Gambling
|
||||
new Image(File.OpenRead(headsPath)) :
|
||||
new Image(File.OpenRead(tailsPath));
|
||||
}
|
||||
await channel.SendFileAsync(imgs.Merge().ToStream(), $"{count} coins.png").ConfigureAwait(false);
|
||||
await Context.Channel.SendFileAsync(imgs.Merge().ToStream(), $"{count} coins.png").ConfigureAwait(false);
|
||||
}
|
||||
|
||||
[NadekoCommand, Usage, Description, Aliases]
|
||||
[RequireContext(ContextType.Guild)]
|
||||
public async Task Betflip(IUserMessage umsg, int amount, string guess)
|
||||
{
|
||||
var channel = (ITextChannel)Context.Channel;
|
||||
//var channel = (ITextChannel)Context.Channel;
|
||||
var guildUser = (IGuildUser)Context.User;
|
||||
var guessStr = guess.Trim().ToUpperInvariant();
|
||||
if (guessStr != "H" && guessStr != "T" && guessStr != "HEADS" && guessStr != "TAILS")
|
||||
@ -59,7 +59,7 @@ namespace NadekoBot.Modules.Gambling
|
||||
|
||||
if (amount < 3)
|
||||
{
|
||||
await channel.SendErrorAsync($"You can't bet less than 3{Gambling.CurrencySign}.")
|
||||
await Context.Channel.SendErrorAsync($"You can't bet less than 3{Gambling.CurrencySign}.")
|
||||
.ConfigureAwait(false);
|
||||
return;
|
||||
}
|
||||
@ -72,7 +72,7 @@ namespace NadekoBot.Modules.Gambling
|
||||
|
||||
if (userFlowers < amount)
|
||||
{
|
||||
await channel.SendErrorAsync($"{Context.User.Mention} You don't have enough {Gambling.CurrencyPluralName}. You only have {userFlowers}{Gambling.CurrencySign}.").ConfigureAwait(false);
|
||||
await Context.Channel.SendErrorAsync($"{Context.User.Mention} You don't have enough {Gambling.CurrencyPluralName}. You only have {userFlowers}{Gambling.CurrencySign}.").ConfigureAwait(false);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -105,7 +105,7 @@ namespace NadekoBot.Modules.Gambling
|
||||
str = $"{Context.User.Mention}`Better luck next time.`";
|
||||
}
|
||||
|
||||
await channel.SendFileAsync(imgPathToSend, str).ConfigureAwait(false);
|
||||
await Context.Channel.SendFileAsync(imgPathToSend, str).ConfigureAwait(false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -44,51 +44,52 @@ namespace NadekoBot.Modules.Gambling
|
||||
[RequireContext(ContextType.Guild)]
|
||||
public async Task Raffle(IUserMessage umsg, [Remainder] IRole role = null)
|
||||
{
|
||||
var channel = (ITextChannel)Context.Channel;
|
||||
//var channel = (ITextChannel)Context.Channel;
|
||||
|
||||
role = role ?? channel.Guild.EveryoneRole;
|
||||
//role = role ?? channel.Guild.EveryoneRole;
|
||||
role = role ?? Context.Guild.EveryoneRole;
|
||||
|
||||
var members = role.Members().Where(u => u.Status != UserStatus.Offline && u.Status != UserStatus.Unknown);
|
||||
var membersArray = members as IUser[] ?? members.ToArray();
|
||||
var usr = membersArray[new NadekoRandom().Next(0, membersArray.Length)];
|
||||
await channel.SendConfirmAsync("🎟 Raffled user", $"**{usr.Username}#{usr.Discriminator}** ID: `{usr.Id}`").ConfigureAwait(false);
|
||||
await Context.Channel.SendConfirmAsync("🎟 Raffled user", $"**{usr.Username}#{usr.Discriminator}** ID: `{usr.Id}`").ConfigureAwait(false);
|
||||
}
|
||||
|
||||
[NadekoCommand, Usage, Description, Aliases]
|
||||
[Priority(0)]
|
||||
public async Task Cash(IUserMessage umsg, [Remainder] IUser user = null)
|
||||
{
|
||||
var channel = Context.Channel;
|
||||
//var channel = Context.Channel;
|
||||
|
||||
user = user ?? Context.User;
|
||||
|
||||
await channel.SendConfirmAsync($"{user.Username} has {GetCurrency(user.Id)} {CurrencySign}").ConfigureAwait(false);
|
||||
await Context.Channel.SendConfirmAsync($"{user.Username} has {GetCurrency(user.Id)} {CurrencySign}").ConfigureAwait(false);
|
||||
}
|
||||
|
||||
[NadekoCommand, Usage, Description, Aliases]
|
||||
[Priority(1)]
|
||||
public async Task Cash(IUserMessage umsg, ulong userId)
|
||||
{
|
||||
var channel = Context.Channel;
|
||||
//var channel = Context.Channel;
|
||||
|
||||
await channel.SendConfirmAsync($"`{userId}` has {GetCurrency(userId)} {CurrencySign}").ConfigureAwait(false);
|
||||
await Context.Channel.SendConfirmAsync($"`{userId}` has {GetCurrency(userId)} {CurrencySign}").ConfigureAwait(false);
|
||||
}
|
||||
|
||||
[NadekoCommand, Usage, Description, Aliases]
|
||||
[RequireContext(ContextType.Guild)]
|
||||
public async Task Give(IUserMessage umsg, long amount, [Remainder] IGuildUser receiver)
|
||||
{
|
||||
var channel = (ITextChannel)Context.Channel;
|
||||
//var channel = (ITextChannel)Context.Channel;
|
||||
if (amount <= 0 || Context.User.Id == receiver.Id)
|
||||
return;
|
||||
var success = await CurrencyHandler.RemoveCurrencyAsync((IGuildUser)Context.User, $"Gift to {receiver.Username} ({receiver.Id}).", amount, true).ConfigureAwait(false);
|
||||
if (!success)
|
||||
{
|
||||
await channel.SendErrorAsync($"{Context.User.Mention} You don't have enough {Gambling.CurrencyPluralName}.").ConfigureAwait(false);
|
||||
await Context.Channel.SendErrorAsync($"{Context.User.Mention} You don't have enough {Gambling.CurrencyPluralName}.").ConfigureAwait(false);
|
||||
return;
|
||||
}
|
||||
await CurrencyHandler.AddCurrencyAsync(receiver, $"Gift from {Context.User.Username} ({Context.User.Id}).", amount, true).ConfigureAwait(false);
|
||||
await channel.SendConfirmAsync($"{Context.User.Mention} successfully sent {amount} {(amount == 1 ? Gambling.CurrencyName : Gambling.CurrencyPluralName)} to {receiver.Mention}!").ConfigureAwait(false);
|
||||
await Context.Channel.SendConfirmAsync($"{Context.User.Mention} successfully sent {amount} {(amount == 1 ? Gambling.CurrencyName : Gambling.CurrencyPluralName)} to {receiver.Mention}!").ConfigureAwait(false);
|
||||
}
|
||||
|
||||
[NadekoCommand, Usage, Description, Aliases]
|
||||
@ -104,14 +105,14 @@ namespace NadekoBot.Modules.Gambling
|
||||
[Priority(1)]
|
||||
public async Task Award(IUserMessage umsg, int amount, ulong usrId)
|
||||
{
|
||||
var channel = (ITextChannel)Context.Channel;
|
||||
//var channel = (ITextChannel)Context.Channel;
|
||||
|
||||
if (amount <= 0)
|
||||
return;
|
||||
|
||||
await CurrencyHandler.AddCurrencyAsync(usrId, $"Awarded by bot owner. ({Context.User.Username}/{Context.User.Id})", amount).ConfigureAwait(false);
|
||||
|
||||
await channel.SendConfirmAsync($"{Context.User.Mention} successfully awarded {amount} {(amount == 1 ? Gambling.CurrencyName : Gambling.CurrencyPluralName)} to <@{usrId}>!").ConfigureAwait(false);
|
||||
await Context.Channel.SendConfirmAsync($"{Context.User.Mention} successfully awarded {amount} {(amount == 1 ? Gambling.CurrencyName : Gambling.CurrencyPluralName)} to <@{usrId}>!").ConfigureAwait(false);
|
||||
}
|
||||
|
||||
[NadekoCommand, Usage, Description, Aliases]
|
||||
@ -121,7 +122,8 @@ namespace NadekoBot.Modules.Gambling
|
||||
public async Task Award(IUserMessage umsg, int amount, [Remainder] IRole role)
|
||||
{
|
||||
var channel = (ITextChannel)Context.Channel;
|
||||
var users = channel.Guild.GetUsers()
|
||||
var users = Context.Guild.GetUsers()
|
||||
//var users = channel.Guild.GetUsers()
|
||||
.Where(u => u.Roles.Contains(role))
|
||||
.ToList();
|
||||
await Task.WhenAll(users.Select(u => CurrencyHandler.AddCurrencyAsync(u.Id,
|
||||
@ -129,7 +131,8 @@ namespace NadekoBot.Modules.Gambling
|
||||
amount)))
|
||||
.ConfigureAwait(false);
|
||||
|
||||
await channel.SendConfirmAsync($"Awarded `{amount}` {Gambling.CurrencyPluralName} to `{users.Count}` users from `{role.Name}` role.")
|
||||
await Context.Channel.SendConfirmAsync($"Awarded `{amount}` {Gambling.CurrencyPluralName} to `{users.Count}` users from `{role.Name}` role.")
|
||||
//await channel.SendConfirmAsync($"Awarded `{amount}` {Gambling.CurrencyPluralName} to `{users.Count}` users from `{role.Name}` role.")
|
||||
.ConfigureAwait(false);
|
||||
|
||||
}
|
||||
@ -139,14 +142,14 @@ namespace NadekoBot.Modules.Gambling
|
||||
[OwnerOnly]
|
||||
public async Task Take(IUserMessage umsg, long amount, [Remainder] IGuildUser user)
|
||||
{
|
||||
var channel = (ITextChannel)Context.Channel;
|
||||
//var channel = (ITextChannel)Context.Channel;
|
||||
if (amount <= 0)
|
||||
return;
|
||||
|
||||
if(await CurrencyHandler.RemoveCurrencyAsync(user, $"Taken by bot owner.({Context.User.Username}/{Context.User.Id})", amount, true).ConfigureAwait(false))
|
||||
await channel.SendConfirmAsync($"{Context.User.Mention} successfully took {amount} {(amount == 1? Gambling.CurrencyName : Gambling.CurrencyPluralName)} from {user}!").ConfigureAwait(false);
|
||||
await Context.Channel.SendConfirmAsync($"{Context.User.Mention} successfully took {amount} {(amount == 1? Gambling.CurrencyName : Gambling.CurrencyPluralName)} from {user}!").ConfigureAwait(false);
|
||||
else
|
||||
await channel.SendErrorAsync($"{Context.User.Mention} was unable to take {amount} {(amount == 1 ? Gambling.CurrencyName : Gambling.CurrencyPluralName)} from {user} because the user doesn't have that much {Gambling.CurrencyPluralName}!").ConfigureAwait(false);
|
||||
await Context.Channel.SendErrorAsync($"{Context.User.Mention} was unable to take {amount} {(amount == 1 ? Gambling.CurrencyName : Gambling.CurrencyPluralName)} from {user} because the user doesn't have that much {Gambling.CurrencyPluralName}!").ConfigureAwait(false);
|
||||
}
|
||||
|
||||
|
||||
@ -155,21 +158,21 @@ namespace NadekoBot.Modules.Gambling
|
||||
[OwnerOnly]
|
||||
public async Task Take(IUserMessage umsg, long amount, [Remainder] ulong usrId)
|
||||
{
|
||||
var channel = (ITextChannel)Context.Channel;
|
||||
//var channel = (ITextChannel)Context.Channel;
|
||||
if (amount <= 0)
|
||||
return;
|
||||
|
||||
if(await CurrencyHandler.RemoveCurrencyAsync(usrId, $"Taken by bot owner.({Context.User.Username}/{Context.User.Id})", amount).ConfigureAwait(false))
|
||||
await channel.SendConfirmAsync($"{Context.User.Mention} successfully took {amount} {(amount == 1 ? Gambling.CurrencyName : Gambling.CurrencyPluralName)} from <@{usrId}>!").ConfigureAwait(false);
|
||||
await Context.Channel.SendConfirmAsync($"{Context.User.Mention} successfully took {amount} {(amount == 1 ? Gambling.CurrencyName : Gambling.CurrencyPluralName)} from <@{usrId}>!").ConfigureAwait(false);
|
||||
else
|
||||
await channel.SendErrorAsync($"{Context.User.Mention} was unable to take {amount} {(amount == 1 ? Gambling.CurrencyName : Gambling.CurrencyPluralName)} from `{usrId}` because the user doesn't have that much {Gambling.CurrencyPluralName}!").ConfigureAwait(false);
|
||||
await Context.Channel.SendErrorAsync($"{Context.User.Mention} was unable to take {amount} {(amount == 1 ? Gambling.CurrencyName : Gambling.CurrencyPluralName)} from `{usrId}` because the user doesn't have that much {Gambling.CurrencyPluralName}!").ConfigureAwait(false);
|
||||
}
|
||||
|
||||
[NadekoCommand, Usage, Description, Aliases]
|
||||
[RequireContext(ContextType.Guild)]
|
||||
public async Task BetRoll(IUserMessage umsg, long amount)
|
||||
{
|
||||
var channel = (ITextChannel)Context.Channel;
|
||||
//var channel = (ITextChannel)Context.Channel;
|
||||
|
||||
if (amount < 1)
|
||||
return;
|
||||
@ -184,7 +187,7 @@ namespace NadekoBot.Modules.Gambling
|
||||
|
||||
if (userFlowers < amount)
|
||||
{
|
||||
await channel.SendErrorAsync($"{guildUser.Mention} You don't have enough {Gambling.CurrencyPluralName}. You only have {userFlowers}{Gambling.CurrencySign}.").ConfigureAwait(false);
|
||||
await Context.Channel.SendErrorAsync($"{guildUser.Mention} You don't have enough {Gambling.CurrencyPluralName}. You only have {userFlowers}{Gambling.CurrencySign}.").ConfigureAwait(false);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -212,14 +215,14 @@ namespace NadekoBot.Modules.Gambling
|
||||
await CurrencyHandler.AddCurrencyAsync(guildUser, "Betroll Gamble", amount * 10, false).ConfigureAwait(false);
|
||||
}
|
||||
|
||||
await channel.SendConfirmAsync(str).ConfigureAwait(false);
|
||||
await Context.Channel.SendConfirmAsync(str).ConfigureAwait(false);
|
||||
}
|
||||
|
||||
[NadekoCommand, Usage, Description, Aliases]
|
||||
[RequireContext(ContextType.Guild)]
|
||||
public async Task Leaderboard()
|
||||
{
|
||||
var channel = (ITextChannel)Context.Channel;
|
||||
//var channel = (ITextChannel)Context.Channel;
|
||||
|
||||
IEnumerable<Currency> richest = new List<Currency>();
|
||||
using (var uow = DbHandler.UnitOfWork())
|
||||
@ -228,14 +231,14 @@ namespace NadekoBot.Modules.Gambling
|
||||
}
|
||||
if (!richest.Any())
|
||||
return;
|
||||
await channel.SendMessageAsync(
|
||||
await Context.Channel.SendMessageAsync(
|
||||
richest.Aggregate(new StringBuilder(
|
||||
$@"```xl
|
||||
┏━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━┓
|
||||
┃ Id ┃ $$$ ┃
|
||||
"),
|
||||
(cur, cs) => cur.AppendLine($@"┣━━━━━━━━━━━━━━━━━━━━━╋━━━━━━━━┫
|
||||
┃{(channel.Guild.GetUser(cs.UserId)?.Username?.TrimTo(18, true) ?? cs.UserId.ToString()),-20} ┃ {cs.Amount,6} ┃")
|
||||
┃{(Context.Guild.GetUser(cs.UserId)?.Username?.TrimTo(18, true) ?? cs.UserId.ToString()),-20} ┃ {cs.Amount,6} ┃")
|
||||
).ToString() + "┗━━━━━━━━━━━━━━━━━━━━━┻━━━━━━━━┛```").ConfigureAwait(false);
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user