.videocall and .logserver, new discord.net version
This commit is contained in:
parent
00e48be7fe
commit
e2d6d8aebf
@ -265,7 +265,7 @@ namespace NadekoBot.Classes.Music {
|
||||
Console.WriteLine("Nothing was buffered, try another song and check your GoogleApikey.");
|
||||
}
|
||||
|
||||
int blockSize = 1920 * NadekoBot.client.Services.Get<AudioService>().Config.Channels;
|
||||
int blockSize = 1920 * NadekoBot.client.GetService<AudioService>().Config.Channels;
|
||||
byte[] voiceBuffer = new byte[blockSize];
|
||||
|
||||
if (parent.OnStarted != null)
|
||||
|
@ -28,7 +28,7 @@ namespace NadekoBot
|
||||
static NadekoStats() { }
|
||||
|
||||
private NadekoStats() {
|
||||
_service = NadekoBot.client.Services.Get<CommandService>();
|
||||
_service = NadekoBot.client.GetService<CommandService>();
|
||||
_client = NadekoBot.client;
|
||||
|
||||
_statsSW = new Stopwatch();
|
||||
|
@ -40,7 +40,7 @@ namespace NadekoBot.Classes {
|
||||
if (string.IsNullOrWhiteSpace(mod))
|
||||
throw new ArgumentNullException(nameof(mod));
|
||||
|
||||
foreach (var m in NadekoBot.client.Modules().Modules) {
|
||||
foreach (var m in NadekoBot.client.GetService<ModuleService>().Modules) {
|
||||
if (m.Name.ToLower().Equals(mod.ToLower()))
|
||||
return m.Name;
|
||||
}
|
||||
@ -51,7 +51,7 @@ namespace NadekoBot.Classes {
|
||||
if (string.IsNullOrWhiteSpace(commandText))
|
||||
throw new ArgumentNullException(nameof(commandText));
|
||||
|
||||
foreach (var com in NadekoBot.client.Services.Get<CommandService>().AllCommands) {
|
||||
foreach (var com in NadekoBot.client.GetService<CommandService>().AllCommands) {
|
||||
if (com.Text.ToLower().Equals(commandText.ToLower()))
|
||||
return com.Text;
|
||||
}
|
||||
|
@ -13,7 +13,7 @@ namespace NadekoBot
|
||||
string helpstr = "**COMMANDS DO NOT WORK IN PERSONAL MESSAGES**\nOfficial repo: **github.com/Kwoth/NadekoBot/**";
|
||||
|
||||
string lastCategory = "";
|
||||
foreach (var com in client.Services.Get<CommandService>().AllCommands)
|
||||
foreach (var com in client.GetService<CommandService>().AllCommands)
|
||||
{
|
||||
if (com.Category != lastCategory)
|
||||
{
|
||||
@ -38,7 +38,7 @@ namespace NadekoBot
|
||||
string helpstr = "Official repo: **github.com/Kwoth/NadekoBot/** \n";
|
||||
|
||||
string lastCategory = "";
|
||||
foreach (var com in client.Services.Get<CommandService>().AllCommands) {
|
||||
foreach (var com in client.GetService<CommandService>().AllCommands) {
|
||||
if (com.Category != lastCategory) {
|
||||
helpstr += "\n### " + com.Category + " \n";
|
||||
helpstr += "Command and aliases | Description | Usage\n";
|
||||
|
72
NadekoBot/Commands/LogCommand.cs
Normal file
72
NadekoBot/Commands/LogCommand.cs
Normal file
@ -0,0 +1,72 @@
|
||||
using System;
|
||||
using System.Collections.Concurrent;
|
||||
using System.Threading.Tasks;
|
||||
using Discord.Commands;
|
||||
using Discord;
|
||||
|
||||
namespace NadekoBot.Commands {
|
||||
class LogCommand : DiscordCommand {
|
||||
|
||||
public LogCommand() : base() {
|
||||
NadekoBot.client.MessageReceived += MsgRecivd;
|
||||
NadekoBot.client.MessageDeleted += MsgDltd;
|
||||
NadekoBot.client.MessageUpdated += MsgUpdtd;
|
||||
NadekoBot.client.UserUpdated += UsrUpdtd;
|
||||
}
|
||||
|
||||
ConcurrentDictionary<Server, Channel> logs = new ConcurrentDictionary<Server, Channel>();
|
||||
|
||||
public override Func<CommandEventArgs, Task> DoFunc() => async e => {
|
||||
if (e.User.Id != NadekoBot.OwnerID ||
|
||||
e.User.Server.Owner.Id != e.User.Id)
|
||||
return;
|
||||
Channel ch;
|
||||
if (!logs.TryRemove(e.Server, out ch)) {
|
||||
logs.TryAdd(e.Server, e.Channel);
|
||||
await e.Channel.SendMessage($"**I WILL BEGIN LOGGING SERVER ACTIVITY IN THIS CHANNEL**");
|
||||
return;
|
||||
}
|
||||
|
||||
await e.Channel.SendMessage($"**NO LONGER LOGGIN IN {ch.Mention} CHANNEL**");
|
||||
};
|
||||
|
||||
private async void MsgRecivd(object sender, MessageEventArgs e) {
|
||||
if (e.Server == null || e.Channel.IsPrivate || e.User.Id == NadekoBot.client.CurrentUser.Id)
|
||||
return;
|
||||
Channel ch;
|
||||
if (!logs.TryGetValue(e.Server, out ch) || e.Channel == ch)
|
||||
return;
|
||||
await ch.SendMessage($"`Type:` **Message received** `Time:` **{DateTime.Now}** `Channel:` **{e.Channel.Name}**\n`{e.User}:` {e.Message.Text}");
|
||||
}
|
||||
private async void MsgDltd(object sender, MessageEventArgs e) {
|
||||
if (e.Server == null || e.Channel.IsPrivate || e.User.Id == NadekoBot.client.CurrentUser.Id)
|
||||
return;
|
||||
Channel ch;
|
||||
if (!logs.TryGetValue(e.Server, out ch) || e.Channel == ch)
|
||||
return;
|
||||
await ch.SendMessage($"`Type:` **Message deleted** `Time:` **{DateTime.Now}** `Channel:` **{e.Channel.Name}**\n`{e.User}:` {e.Message.Text}");
|
||||
}
|
||||
private async void MsgUpdtd(object sender, MessageUpdatedEventArgs e) {
|
||||
if (e.Server == null || e.Channel.IsPrivate || e.User.Id == NadekoBot.client.CurrentUser.Id)
|
||||
return;
|
||||
Channel ch;
|
||||
if (!logs.TryGetValue(e.Server, out ch) || e.Channel == ch)
|
||||
return;
|
||||
await ch.SendMessage($"`Type:` **Message updated** `Time:` **{DateTime.Now}** `Channel:` **{e.Channel.Name}**\n**BEFORE**: `{e.User}:` {e.Before.Text}\n---------------\n**AFTER**: `{e.User}:` {e.Before.Text}");
|
||||
}
|
||||
private async void UsrUpdtd(object sender, UserUpdatedEventArgs e) {
|
||||
string str = $"`Type:` **User updated** `Time:` **{DateTime.Now}**\n";
|
||||
if (e.Before.Name != e.After.Name)
|
||||
str += $"Name changed from `{e.Before.Name}` to `{e.After.Name}`";
|
||||
else if (e.Before.AvatarUrl != e.After.AvatarUrl)
|
||||
str += $"Avatar url changed from `{e.Before.AvatarUrl}` to `{e.After.AvatarUrl}`";
|
||||
else if (e.Before.Status != e.After.Status)
|
||||
str += $"Status changed from `{e.Before.AvatarUrl}` to `{e.After.AvatarUrl}`";
|
||||
}
|
||||
public override void Init(CommandGroupBuilder cgb) {
|
||||
cgb.CreateCommand(".logserver")
|
||||
.Description("Toggles logging in this channel. Logs every message sent/deleted/edited on the server. BOT OWNER ONLY. SERVER OWNER ONLY.")
|
||||
.Do(DoFunc());
|
||||
}
|
||||
}
|
||||
}
|
@ -20,6 +20,7 @@ namespace NadekoBot.Modules {
|
||||
class Administration : DiscordModule {
|
||||
public Administration() : base() {
|
||||
commands.Add(new ServerGreetCommand());
|
||||
commands.Add(new LogCommand());
|
||||
}
|
||||
|
||||
public override void Install(ModuleManager manager) {
|
||||
@ -161,14 +162,14 @@ namespace NadekoBot.Modules {
|
||||
cgb.CreateCommand(".modules")
|
||||
.Description("List all bot modules")
|
||||
.Do(async e => {
|
||||
await e.Send("`List of modules:` \n• " + string.Join("\n• ", NadekoBot.client.Modules().Modules.Select(m => m.Name)));
|
||||
await e.Send("`List of modules:` \n• " + string.Join("\n• ", NadekoBot.client.GetService<ModuleService>().Modules.Select(m => m.Name)));
|
||||
});
|
||||
|
||||
cgb.CreateCommand(".commands")
|
||||
.Description("List all of the bot's commands from a certain module.")
|
||||
.Parameter("module", ParameterType.Unparsed)
|
||||
.Do(async e => {
|
||||
var commands = NadekoBot.client.Services.Get<CommandService>().AllCommands
|
||||
var commands = NadekoBot.client.GetService<CommandService>().AllCommands
|
||||
.Where(c => c.Category.ToLower() == e.GetArg("module").Trim().ToLower());
|
||||
if (commands == null || commands.Count() == 0) {
|
||||
await e.Send("That module does not exist.");
|
||||
@ -430,12 +431,25 @@ namespace NadekoBot.Modules {
|
||||
|
||||
ConcurrentDictionary<Server, bool> clearDictionary = new ConcurrentDictionary<Server, bool>();
|
||||
cgb.CreateCommand(".clr")
|
||||
.Description("Clears some of nadeko's messages from the current channel.")
|
||||
.Description("Clears some of nadeko's (or some other user's if supplied) messages from the current channel.\n**Usage**: .clr @X")
|
||||
.Parameter("user",ParameterType.Unparsed)
|
||||
.Do(async e => {
|
||||
var usrId = NadekoBot.client.CurrentUser.Id;
|
||||
if (!string.IsNullOrWhiteSpace(e.GetArg("user"))) {
|
||||
var usr = e.Server.FindUsers(e.GetArg("user")).FirstOrDefault();
|
||||
if (usr != null)
|
||||
usrId = usr.Id;
|
||||
}
|
||||
await Task.Run(async () => {
|
||||
var msgs = (await e.Channel.DownloadMessages(100)).Where(m => m.User.Id == NadekoBot.client.CurrentUser.Id);
|
||||
foreach (var m in msgs)
|
||||
await m.Delete();
|
||||
var msgs = (await e.Channel.DownloadMessages(100)).Where(m => m.User.Id == usrId);
|
||||
foreach (var m in msgs) {
|
||||
try {
|
||||
await m.Delete();
|
||||
}
|
||||
catch { }
|
||||
await Task.Delay(200);
|
||||
}
|
||||
|
||||
});
|
||||
});
|
||||
|
||||
@ -629,6 +643,26 @@ namespace NadekoBot.Modules {
|
||||
Console.WriteLine("---------------\nInner error:\n" + ex.InnerException);
|
||||
}
|
||||
});
|
||||
|
||||
cgb.CreateCommand(".videocall")
|
||||
.Description("Creates a private appear.in video call link for you and other mentioned people and sends it in private messages")
|
||||
.Parameter("arg", ParameterType.Unparsed)
|
||||
.Do(async e => {
|
||||
try {
|
||||
string str = "http://appear.in/";
|
||||
var allUsrs = e.Message.MentionedUsers.Union(new User[] { e.User });
|
||||
foreach (var usr in allUsrs) {
|
||||
str += Uri.EscapeUriString(usr.Name[0].ToString());
|
||||
}
|
||||
str += new Random().Next(100000, 1000000);
|
||||
foreach (var usr in allUsrs) {
|
||||
await usr.SendMessage(str);
|
||||
}
|
||||
}
|
||||
catch (Exception ex) {
|
||||
Console.WriteLine(ex);
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -349,7 +349,7 @@ namespace NadekoBot.Modules {
|
||||
try {
|
||||
bool state = PermissionHelper.ValidateBool(e.GetArg("bool"));
|
||||
|
||||
foreach (var module in NadekoBot.client.Modules().Modules) {
|
||||
foreach (var module in NadekoBot.client.GetService<ModuleService>().Modules) {
|
||||
PermsHandler.SetServerModulePermission(e.Server, module.Name, state);
|
||||
}
|
||||
await e.Send($"All modules have been **{(state ? "enabled" : "disabled")}** on this server.");
|
||||
@ -371,7 +371,7 @@ namespace NadekoBot.Modules {
|
||||
bool state = PermissionHelper.ValidateBool(e.GetArg("bool"));
|
||||
string module = PermissionHelper.ValidateModule(e.GetArg("module"));
|
||||
|
||||
foreach (var command in NadekoBot.client.Services.Get<CommandService>().AllCommands.Where(c => c.Category == module)) {
|
||||
foreach (var command in NadekoBot.client.GetService<CommandService>().AllCommands.Where(c => c.Category == module)) {
|
||||
PermsHandler.SetServerCommandPermission(e.Server, command.Text, state);
|
||||
}
|
||||
await e.Send($"All commands from the **{module}** module have been **{(state ? "enabled" : "disabled")}** on this server.");
|
||||
@ -392,7 +392,7 @@ namespace NadekoBot.Modules {
|
||||
try {
|
||||
bool state = PermissionHelper.ValidateBool(e.GetArg("bool"));
|
||||
Discord.Channel channel = PermissionHelper.ValidateChannel(e.Server, e.GetArg("channel"));
|
||||
foreach (var module in NadekoBot.client.Modules().Modules) {
|
||||
foreach (var module in NadekoBot.client.GetService<ModuleService>().Modules) {
|
||||
PermsHandler.SetChannelModulePermission(channel, module.Name, state);
|
||||
}
|
||||
|
||||
@ -416,7 +416,7 @@ namespace NadekoBot.Modules {
|
||||
bool state = PermissionHelper.ValidateBool(e.GetArg("bool"));
|
||||
string module = PermissionHelper.ValidateModule(e.GetArg("module"));
|
||||
Discord.Channel channel = PermissionHelper.ValidateChannel(e.Server, e.GetArg("channel"));
|
||||
foreach (var command in NadekoBot.client.Services.Get<CommandService>().AllCommands.Where(c => c.Category == module)) {
|
||||
foreach (var command in NadekoBot.client.GetService<CommandService>().AllCommands.Where(c => c.Category == module)) {
|
||||
PermsHandler.SetChannelCommandPermission(channel, command.Text, state);
|
||||
}
|
||||
await e.Send($"All commands from the **{module}** module have been **{(state ? "enabled" : "disabled")}** for **{channel.Name}** channel.");
|
||||
@ -437,7 +437,7 @@ namespace NadekoBot.Modules {
|
||||
try {
|
||||
bool state = PermissionHelper.ValidateBool(e.GetArg("bool"));
|
||||
Discord.Role role = PermissionHelper.ValidateRole(e.Server, e.GetArg("role"));
|
||||
foreach (var module in NadekoBot.client.Modules().Modules) {
|
||||
foreach (var module in NadekoBot.client.GetService<ModuleService>().Modules) {
|
||||
PermsHandler.SetRoleModulePermission(role, module.Name, state);
|
||||
}
|
||||
|
||||
@ -461,7 +461,7 @@ namespace NadekoBot.Modules {
|
||||
bool state = PermissionHelper.ValidateBool(e.GetArg("bool"));
|
||||
string module = PermissionHelper.ValidateModule(e.GetArg("module"));
|
||||
Discord.Role role = PermissionHelper.ValidateRole(e.Server, e.GetArg("channel"));
|
||||
foreach (var command in NadekoBot.client.Services.Get<CommandService>().AllCommands.Where(c => c.Category == module)) {
|
||||
foreach (var command in NadekoBot.client.GetService<CommandService>().AllCommands.Where(c => c.Category == module)) {
|
||||
PermsHandler.SetRoleCommandPermission(role, command.Text, state);
|
||||
}
|
||||
await e.Send($"All commands from the **{module}** module have been **{(state ? "enabled" : "disabled")}** for **{role.Name}** role.");
|
||||
|
@ -62,7 +62,7 @@ namespace NadekoBot {
|
||||
|
||||
//create new discord client
|
||||
client = new DiscordClient(new DiscordConfigBuilder() {
|
||||
MessageCacheSize = 0,
|
||||
MessageCacheSize = 20,
|
||||
ConnectionTimeout = 60000,
|
||||
});
|
||||
|
||||
@ -77,13 +77,13 @@ namespace NadekoBot {
|
||||
client.MessageReceived += Client_MessageReceived;
|
||||
|
||||
//add command service
|
||||
var commands = client.Services.Add<CommandService>(commandService);
|
||||
var commands = client.AddService<CommandService>(commandService);
|
||||
|
||||
//create module service
|
||||
var modules = client.Services.Add<ModuleService>(new ModuleService());
|
||||
var modules = client.AddService<ModuleService>(new ModuleService());
|
||||
|
||||
//add audio service
|
||||
var audio = client.Services.Add<AudioService>(new AudioService(new AudioServiceConfigBuilder() {
|
||||
var audio = client.AddService<AudioService>(new AudioService(new AudioServiceConfigBuilder() {
|
||||
Channels = 2,
|
||||
EnableEncryption = false,
|
||||
EnableMultiserver = true,
|
||||
|
@ -146,6 +146,7 @@
|
||||
<Compile Include="Classes\_DataModels\StatsModel.cs" />
|
||||
<Compile Include="Classes\_DataModels\TypingArticleModel.cs" />
|
||||
<Compile Include="Commands\ClashOfClans.cs" />
|
||||
<Compile Include="Commands\LogCommand.cs" />
|
||||
<Compile Include="Commands\TriviaCommand.cs" />
|
||||
<Compile Include="Classes\Trivia\TriviaGame.cs" />
|
||||
<Compile Include="Classes\Trivia\TriviaQuestion.cs" />
|
||||
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Loading…
Reference in New Issue
Block a user