Conversations cleaned up completely
This commit is contained in:
@ -2,9 +2,7 @@
|
||||
using Discord.Commands;
|
||||
using Discord;
|
||||
using System;
|
||||
using System.Diagnostics;
|
||||
using System.Linq;
|
||||
using System.Timers;
|
||||
using NadekoBot.Extensions;
|
||||
using System.Threading.Tasks;
|
||||
using NadekoBot.Commands;
|
||||
@ -12,13 +10,13 @@ using System.IO;
|
||||
using System.Collections.Concurrent;
|
||||
using Newtonsoft.Json.Linq;
|
||||
using System.Collections.Generic;
|
||||
using NadekoBot.Classes.Permissions;
|
||||
using NadekoBot.Classes._DataModels;
|
||||
using System.Threading;
|
||||
using Timer = System.Timers.Timer;
|
||||
|
||||
namespace NadekoBot.Modules {
|
||||
class Administration : DiscordModule {
|
||||
public Administration() : base() {
|
||||
internal class Administration : DiscordModule {
|
||||
public Administration() {
|
||||
commands.Add(new ServerGreetCommand());
|
||||
commands.Add(new LogCommand());
|
||||
commands.Add(new PlayingRotate());
|
||||
@ -27,7 +25,7 @@ namespace NadekoBot.Modules {
|
||||
public override void Install(ModuleManager manager) {
|
||||
manager.CreateCommands("", cgb => {
|
||||
|
||||
cgb.AddCheck(Classes.Permissions.PermissionChecker.Instance);
|
||||
cgb.AddCheck(PermissionChecker.Instance);
|
||||
|
||||
var client = manager.Client;
|
||||
|
||||
@ -37,27 +35,34 @@ namespace NadekoBot.Modules {
|
||||
.Description("Sets a role for a given user.\n**Usage**: .sr @User Guest")
|
||||
.Parameter("user_name", ParameterType.Required)
|
||||
.Parameter("role_name", ParameterType.Unparsed)
|
||||
.AddCheck(SimpleCheckers.CanManageRoles)
|
||||
.Do(async e => {
|
||||
if (!e.User.ServerPermissions.ManageRoles ||
|
||||
string.IsNullOrWhiteSpace(e.GetArg("role_name"))) return;
|
||||
var usr = e.Server.FindUsers(e.GetArg("user_name")).FirstOrDefault();
|
||||
var userName = e.GetArg("user_name");
|
||||
var roleName = e.GetArg("role_name");
|
||||
|
||||
if (string.IsNullOrWhiteSpace(roleName)) return;
|
||||
|
||||
if (!e.User.ServerPermissions.ManageRoles) {
|
||||
await e.Channel.SendMessage("You have insufficient permissions.");
|
||||
}
|
||||
|
||||
var usr = e.Server.FindUsers(userName).FirstOrDefault();
|
||||
if (usr == null) {
|
||||
await e.Channel.SendMessage("You failed to supply a valid username");
|
||||
return;
|
||||
}
|
||||
|
||||
var role = e.Server.FindRoles(e.GetArg("role_name")).FirstOrDefault();
|
||||
var role = e.Server.FindRoles(roleName).FirstOrDefault();
|
||||
if (role == null) {
|
||||
await e.Channel.SendMessage("You failed to supply a valid role");
|
||||
return;
|
||||
}
|
||||
|
||||
try {
|
||||
await usr.AddRoles(new Role[] { role });
|
||||
await usr.AddRoles(role);
|
||||
await e.Channel.SendMessage($"Successfully added role **{role.Name}** to user **{usr.Name}**");
|
||||
}
|
||||
catch (Exception ex) {
|
||||
await e.Channel.SendMessage("Failed to add roles. Most likely reason: Insufficient permissions.\n");
|
||||
} catch (Exception ex) {
|
||||
await e.Channel.SendMessage("Failed to add roles. Bot has insufficient permissions.\n");
|
||||
Console.WriteLine(ex.ToString());
|
||||
}
|
||||
});
|
||||
@ -66,28 +71,29 @@ namespace NadekoBot.Modules {
|
||||
.Description("Removes a role from a given user.\n**Usage**: .rr @User Admin")
|
||||
.Parameter("user_name", ParameterType.Required)
|
||||
.Parameter("role_name", ParameterType.Unparsed)
|
||||
.AddCheck(SimpleCheckers.CanManageRoles)
|
||||
.Do(async e => {
|
||||
if (!e.User.ServerPermissions.ManageRoles ||
|
||||
string.IsNullOrWhiteSpace("role_name")) return;
|
||||
var userName = e.GetArg("user_name");
|
||||
var roleName = e.GetArg("role_name");
|
||||
|
||||
var usr = e.Server.FindUsers(e.GetArg("user_name")).FirstOrDefault();
|
||||
if (string.IsNullOrWhiteSpace(roleName)) return;
|
||||
|
||||
var usr = e.Server.FindUsers(userName).FirstOrDefault();
|
||||
if (usr == null) {
|
||||
await e.Channel.SendMessage("You failed to supply a valid username");
|
||||
return;
|
||||
}
|
||||
var role = e.Server.FindRoles(e.GetArg("role_name")).FirstOrDefault();
|
||||
|
||||
var role = e.Server.FindRoles(roleName).FirstOrDefault();
|
||||
if (role == null) {
|
||||
await e.Channel.SendMessage("You failed to supply a valid role");
|
||||
return;
|
||||
}
|
||||
|
||||
try {
|
||||
await usr.RemoveRoles(new Role[] { role });
|
||||
await usr.RemoveRoles(role);
|
||||
await e.Channel.SendMessage($"Successfully removed role **{role.Name}** from user **{usr.Name}**");
|
||||
}
|
||||
catch (InvalidOperationException) {
|
||||
}
|
||||
catch {
|
||||
} catch {
|
||||
await e.Channel.SendMessage("Failed to remove roles. Most likely reason: Insufficient permissions.");
|
||||
}
|
||||
});
|
||||
@ -95,21 +101,20 @@ namespace NadekoBot.Modules {
|
||||
cgb.CreateCommand(".r").Alias(".role").Alias(".cr")
|
||||
.Description("Creates a role with a given name.**Usage**: .r Awesome Role")
|
||||
.Parameter("role_name", ParameterType.Unparsed)
|
||||
.AddCheck(SimpleCheckers.CanManageRoles)
|
||||
.Do(async e => {
|
||||
if (!e.User.ServerPermissions.ManageRoles) return;
|
||||
if (string.IsNullOrWhiteSpace(e.GetArg("role_name")))
|
||||
return;
|
||||
try {
|
||||
var r = await e.Server.CreateRole(e.GetArg("role_name"));
|
||||
await e.Channel.SendMessage($"Successfully created role **{r.Name}**.");
|
||||
}
|
||||
catch (Exception ex) {
|
||||
} catch (Exception) {
|
||||
await e.Channel.SendMessage(":warning: Unspecified error.");
|
||||
}
|
||||
});
|
||||
|
||||
cgb.CreateCommand(".rolecolor").Alias(".rc")
|
||||
.Parameter("Rolename", ParameterType.Required)
|
||||
.Parameter("role_name", ParameterType.Required)
|
||||
.Parameter("r", ParameterType.Optional)
|
||||
.Parameter("g", ParameterType.Optional)
|
||||
.Parameter("b", ParameterType.Optional)
|
||||
@ -120,47 +125,44 @@ namespace NadekoBot.Modules {
|
||||
return;
|
||||
}
|
||||
|
||||
var args = e.Args.Where(s => s != String.Empty);
|
||||
var args = e.Args.Where(s => s != string.Empty);
|
||||
|
||||
if (args.Count() != 2 && args.Count() != 4) {
|
||||
await e.Channel.SendMessage("The parameters are invalid.");
|
||||
return;
|
||||
}
|
||||
|
||||
Role role = e.Server.FindRoles(e.Args[0]).FirstOrDefault();
|
||||
var role = e.Server.FindRoles(e.Args[0]).FirstOrDefault();
|
||||
|
||||
if (role == null) {
|
||||
await e.Channel.SendMessage("That role does not exist.");
|
||||
return;
|
||||
}
|
||||
try {
|
||||
bool rgb = args.Count() == 4;
|
||||
var rgb = args.Count() == 4;
|
||||
|
||||
byte red = Convert.ToByte(rgb ? int.Parse(e.Args[1]) : Convert.ToInt32(e.Args[1].Substring(0, 2), 16));
|
||||
byte green = Convert.ToByte(rgb ? int.Parse(e.Args[2]) : Convert.ToInt32(e.Args[1].Substring(2, 2), 16));
|
||||
byte blue = Convert.ToByte(rgb ? int.Parse(e.Args[3]) : Convert.ToInt32(e.Args[1].Substring(4, 2), 16));
|
||||
var red = Convert.ToByte(rgb ? int.Parse(e.Args[1]) : Convert.ToInt32(e.Args[1].Substring(0, 2), 16));
|
||||
var green = Convert.ToByte(rgb ? int.Parse(e.Args[2]) : Convert.ToInt32(e.Args[1].Substring(2, 2), 16));
|
||||
var blue = Convert.ToByte(rgb ? int.Parse(e.Args[3]) : Convert.ToInt32(e.Args[1].Substring(4, 2), 16));
|
||||
|
||||
await role.Edit(color: new Color(red, green, blue));
|
||||
await e.Channel.SendMessage($"Role {role.Name}'s color has been changed.");
|
||||
}
|
||||
catch (Exception ex) {
|
||||
await e.Channel.SendMessage(":warning: Unspecified error, please report this.");
|
||||
} catch (Exception ex) {
|
||||
await e.Channel.SendMessage("Error occured, most likely invalid parameters.");
|
||||
Console.WriteLine($".rolecolor error: {ex}");
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
cgb.CreateCommand(".roles")
|
||||
.Description("List all roles on this server or a single user if specified.")
|
||||
.Parameter("user", ParameterType.Unparsed)
|
||||
.Do(async e => {
|
||||
|
||||
if (!string.IsNullOrWhiteSpace(e.GetArg("user"))) {
|
||||
var usr = e.Server.FindUsers(e.GetArg("user")).FirstOrDefault();
|
||||
if (usr != null) {
|
||||
await e.Channel.SendMessage($"`List of roles for **{usr.Name}**:` \n• " + string.Join("\n• ", usr.Roles));
|
||||
return;
|
||||
}
|
||||
if (usr == null) return;
|
||||
|
||||
await e.Channel.SendMessage($"`List of roles for **{usr.Name}**:` \n• " + string.Join("\n• ", usr.Roles));
|
||||
return;
|
||||
}
|
||||
await e.Channel.SendMessage("`List of roles:` \n• " + string.Join("\n• ", e.Server.Roles));
|
||||
});
|
||||
@ -175,8 +177,7 @@ namespace NadekoBot.Modules {
|
||||
await usr.Server.Ban(usr);
|
||||
await e.Channel.SendMessage("Banned user " + usr.Name + " Id: " + usr.Id);
|
||||
}
|
||||
}
|
||||
catch (Exception ex) { }
|
||||
} catch (Exception ex) { }
|
||||
});
|
||||
|
||||
cgb.CreateCommand(".ub").Alias(".unban")
|
||||
@ -189,8 +190,7 @@ namespace NadekoBot.Modules {
|
||||
await usr.Server.Unban(usr);
|
||||
await e.Channel.SendMessage("Unbanned user " + usr.Name + " Id: " + usr.Id);
|
||||
}
|
||||
}
|
||||
catch { }
|
||||
} catch { }
|
||||
});
|
||||
|
||||
cgb.CreateCommand(".k").Alias(".kick")
|
||||
@ -203,8 +203,7 @@ namespace NadekoBot.Modules {
|
||||
await e.Message.MentionedUsers.First().Kick();
|
||||
await e.Channel.SendMessage("Kicked user " + usr.Name + " Id: " + usr.Id);
|
||||
}
|
||||
}
|
||||
catch {
|
||||
} catch {
|
||||
await e.Channel.SendMessage("No sufficient permissions.");
|
||||
}
|
||||
});
|
||||
@ -223,8 +222,7 @@ namespace NadekoBot.Modules {
|
||||
await u.Edit(isMuted: true);
|
||||
}
|
||||
await e.Channel.SendMessage("Mute successful");
|
||||
}
|
||||
catch {
|
||||
} catch {
|
||||
await e.Channel.SendMessage("I do not have permission to do that most likely.");
|
||||
}
|
||||
});
|
||||
@ -244,8 +242,7 @@ namespace NadekoBot.Modules {
|
||||
await u.Edit(isMuted: false);
|
||||
}
|
||||
await e.Channel.SendMessage("Unmute successful");
|
||||
}
|
||||
catch {
|
||||
} catch {
|
||||
await e.Channel.SendMessage("I do not have permission to do that most likely.");
|
||||
}
|
||||
});
|
||||
@ -266,8 +263,7 @@ namespace NadekoBot.Modules {
|
||||
await u.Edit(isDeafened: true);
|
||||
}
|
||||
await e.Channel.SendMessage("Deafen successful");
|
||||
}
|
||||
catch {
|
||||
} catch {
|
||||
await e.Channel.SendMessage("I do not have permission to do that most likely.");
|
||||
}
|
||||
});
|
||||
@ -288,8 +284,7 @@ namespace NadekoBot.Modules {
|
||||
await u.Edit(isDeafened: false);
|
||||
}
|
||||
await e.Channel.SendMessage("Undeafen successful");
|
||||
}
|
||||
catch {
|
||||
} catch {
|
||||
await e.Channel.SendMessage("I do not have permission to do that most likely.");
|
||||
}
|
||||
});
|
||||
@ -303,8 +298,7 @@ namespace NadekoBot.Modules {
|
||||
await e.Server.FindChannels(e.GetArg("channel_name"), ChannelType.Voice).FirstOrDefault()?.Delete();
|
||||
await e.Channel.SendMessage($"Removed channel **{e.GetArg("channel_name")}**.");
|
||||
}
|
||||
}
|
||||
catch {
|
||||
} catch {
|
||||
await e.Channel.SendMessage("Insufficient permissions.");
|
||||
}
|
||||
});
|
||||
@ -318,8 +312,7 @@ namespace NadekoBot.Modules {
|
||||
await e.Server.CreateChannel(e.GetArg("channel_name"), ChannelType.Voice);
|
||||
await e.Channel.SendMessage($"Created voice channel **{e.GetArg("channel_name")}**.");
|
||||
}
|
||||
}
|
||||
catch {
|
||||
} catch {
|
||||
await e.Channel.SendMessage("Insufficient permissions.");
|
||||
}
|
||||
});
|
||||
@ -333,8 +326,7 @@ namespace NadekoBot.Modules {
|
||||
await e.Server.FindChannels(e.GetArg("channel_name"), ChannelType.Text).FirstOrDefault()?.Delete();
|
||||
await e.Channel.SendMessage($"Removed text channel **{e.GetArg("channel_name")}**.");
|
||||
}
|
||||
}
|
||||
catch {
|
||||
} catch {
|
||||
await e.Channel.SendMessage("Insufficient permissions.");
|
||||
}
|
||||
});
|
||||
@ -348,8 +340,7 @@ namespace NadekoBot.Modules {
|
||||
await e.Server.CreateChannel(e.GetArg("channel_name"), ChannelType.Text);
|
||||
await e.Channel.SendMessage($"Added text channel **{e.GetArg("channel_name")}**.");
|
||||
}
|
||||
}
|
||||
catch {
|
||||
} catch {
|
||||
await e.Channel.SendMessage("Insufficient permissions.");
|
||||
}
|
||||
});
|
||||
@ -361,8 +352,7 @@ namespace NadekoBot.Modules {
|
||||
try {
|
||||
if (e.User.ServerPermissions.ManageChannels)
|
||||
await e.Channel.Edit(topic: e.GetArg("topic"));
|
||||
}
|
||||
catch { }
|
||||
} catch { }
|
||||
});
|
||||
|
||||
cgb.CreateCommand(".uid").Alias(".userid")
|
||||
@ -399,7 +389,7 @@ namespace NadekoBot.Modules {
|
||||
cgb.CreateCommand(".leaveall")
|
||||
.Description("Nadeko leaves all servers **OWNER ONLY**")
|
||||
.Do(e => {
|
||||
if (e.User.Id == NadekoBot.OwnerID)
|
||||
if (NadekoBot.IsOwner(e.User.Id))
|
||||
NadekoBot.client.Servers.ForEach(async s => { if (s.Name == e.Server.Name) return; await s.Leave(); });
|
||||
});
|
||||
*/
|
||||
@ -422,7 +412,7 @@ namespace NadekoBot.Modules {
|
||||
.Alias(".graceful")
|
||||
.Description("Works only for the owner. Shuts the bot down and notifies users about the restart.")
|
||||
.Do(async e => {
|
||||
if (e.User.Id == NadekoBot.OwnerID) {
|
||||
if (NadekoBot.IsOwner(e.User.Id)) {
|
||||
Timer t = new Timer();
|
||||
t.Interval = 2000;
|
||||
t.Elapsed += (s, ev) => { Environment.Exit(0); };
|
||||
@ -447,8 +437,7 @@ namespace NadekoBot.Modules {
|
||||
foreach (var m in msgs) {
|
||||
try {
|
||||
await m.Delete();
|
||||
}
|
||||
catch { }
|
||||
} catch { }
|
||||
await Task.Delay(200);
|
||||
}
|
||||
|
||||
@ -460,9 +449,9 @@ namespace NadekoBot.Modules {
|
||||
.Description("Give the bot a new name.")
|
||||
.Parameter("new_name", ParameterType.Unparsed)
|
||||
.Do(async e => {
|
||||
if (e.User.Id != NadekoBot.OwnerID || e.GetArg("new_name") == null) return;
|
||||
if (!NadekoBot.IsOwner(e.User.Id) || e.GetArg("new_name") == null) return;
|
||||
|
||||
await client.CurrentUser.Edit(NadekoBot.password, e.GetArg("new_name"));
|
||||
await client.CurrentUser.Edit(NadekoBot.Creds.Password, e.GetArg("new_name"));
|
||||
});
|
||||
|
||||
cgb.CreateCommand(".newavatar")
|
||||
@ -470,7 +459,7 @@ namespace NadekoBot.Modules {
|
||||
.Description("Sets a new avatar image for the NadekoBot.")
|
||||
.Parameter("img", ParameterType.Unparsed)
|
||||
.Do(async e => {
|
||||
if (e.User.Id != NadekoBot.OwnerID || string.IsNullOrWhiteSpace(e.GetArg("img")))
|
||||
if (!NadekoBot.IsOwner(e.User.Id) || string.IsNullOrWhiteSpace(e.GetArg("img")))
|
||||
return;
|
||||
// Gather user provided URL.
|
||||
string avatarAddress = e.GetArg("img");
|
||||
@ -484,7 +473,7 @@ namespace NadekoBot.Modules {
|
||||
System.Drawing.Image image = System.Drawing.Image.FromStream(webResponse.GetResponseStream());
|
||||
// Save the image to disk.
|
||||
image.Save("data/avatar.png", System.Drawing.Imaging.ImageFormat.Png);
|
||||
await client.CurrentUser.Edit(NadekoBot.password, avatar: image.ToStream());
|
||||
await client.CurrentUser.Edit(NadekoBot.Creds.Password, avatar: image.ToStream());
|
||||
// Send confirm.
|
||||
await e.Channel.SendMessage("New avatar set.");
|
||||
});
|
||||
@ -493,7 +482,7 @@ namespace NadekoBot.Modules {
|
||||
.Description("Sets the bots game.")
|
||||
.Parameter("set_game", ParameterType.Unparsed)
|
||||
.Do(e => {
|
||||
if (e.User.Id != NadekoBot.OwnerID || e.GetArg("set_game") == null) return;
|
||||
if (e.User.Id != NadekoBot.Creds.OwnerID || e.GetArg("set_game") == null) return;
|
||||
|
||||
client.SetGame(e.GetArg("set_game"));
|
||||
});
|
||||
@ -517,13 +506,12 @@ namespace NadekoBot.Modules {
|
||||
.Description("Sets a user for through-bot communication. Only works if server is set. Resets commschannel.**Owner only**.")
|
||||
.Parameter("name", ParameterType.Unparsed)
|
||||
.Do(async e => {
|
||||
if (e.User.Id != NadekoBot.OwnerID) return;
|
||||
if (!NadekoBot.IsOwner(e.User.Id)) return;
|
||||
commsUser = commsServer?.FindUsers(e.GetArg("name")).FirstOrDefault();
|
||||
if (commsUser != null) {
|
||||
commsChannel = null;
|
||||
await e.Channel.SendMessage("User for comms set.");
|
||||
}
|
||||
else
|
||||
} else
|
||||
await e.Channel.SendMessage("No server specified or user.");
|
||||
});
|
||||
|
||||
@ -531,7 +519,7 @@ namespace NadekoBot.Modules {
|
||||
.Description("Sets a server for through-bot communication.**Owner only**.")
|
||||
.Parameter("server", ParameterType.Unparsed)
|
||||
.Do(async e => {
|
||||
if (e.User.Id != NadekoBot.OwnerID) return;
|
||||
if (!NadekoBot.IsOwner(e.User.Id)) return;
|
||||
commsServer = client.FindServers(e.GetArg("server")).FirstOrDefault();
|
||||
if (commsServer != null)
|
||||
await e.Channel.SendMessage("Server for comms set.");
|
||||
@ -543,13 +531,12 @@ namespace NadekoBot.Modules {
|
||||
.Description("Sets a channel for through-bot communication. Only works if server is set. Resets commsuser.**Owner only**.")
|
||||
.Parameter("ch", ParameterType.Unparsed)
|
||||
.Do(async e => {
|
||||
if (e.User.Id != NadekoBot.OwnerID) return;
|
||||
if (!NadekoBot.IsOwner(e.User.Id)) return;
|
||||
commsChannel = commsServer?.FindChannels(e.GetArg("ch"), ChannelType.Text).FirstOrDefault();
|
||||
if (commsChannel != null) {
|
||||
commsUser = null;
|
||||
await e.Channel.SendMessage("Server for comms set.");
|
||||
}
|
||||
else
|
||||
} else
|
||||
await e.Channel.SendMessage("No server specified or channel is invalid.");
|
||||
});
|
||||
|
||||
@ -557,7 +544,7 @@ namespace NadekoBot.Modules {
|
||||
.Description("Send a message to someone on a different server through the bot.**Owner only.**\n **Usage**: .send Message text multi word!")
|
||||
.Parameter("msg", ParameterType.Unparsed)
|
||||
.Do(async e => {
|
||||
if (e.User.Id != NadekoBot.OwnerID) return;
|
||||
if (!NadekoBot.IsOwner(e.User.Id)) return;
|
||||
if (commsUser != null)
|
||||
await commsUser.SendMessage(e.GetArg("msg"));
|
||||
else if (commsChannel != null)
|
||||
@ -593,7 +580,7 @@ namespace NadekoBot.Modules {
|
||||
cgb.CreateCommand(".parsetosql")
|
||||
.Description("Loads exported parsedata from /data/parsedata/ into sqlite database.")
|
||||
.Do(async e => {
|
||||
if (e.User.Id != NadekoBot.OwnerID)
|
||||
if (!NadekoBot.IsOwner(e.User.Id))
|
||||
return;
|
||||
await Task.Run(() => {
|
||||
SaveParseToDb<Announcement>("data/parsedata/Announcements.json");
|
||||
@ -631,7 +618,7 @@ namespace NadekoBot.Modules {
|
||||
.Parameter("amount")
|
||||
.Do(e => {
|
||||
try {
|
||||
if (NadekoBot.OwnerID != e.User.Id)
|
||||
if (!NadekoBot.IsOwner(e.User.Id))
|
||||
return;
|
||||
var donator = e.Server.FindUsers(e.GetArg("donator")).FirstOrDefault();
|
||||
var amount = int.Parse(e.GetArg("amount"));
|
||||
@ -641,8 +628,7 @@ namespace NadekoBot.Modules {
|
||||
UserId = (long)e.User.Id
|
||||
});
|
||||
e.Channel.SendMessage("Successfuly added a new donator. 👑");
|
||||
}
|
||||
catch (Exception ex) {
|
||||
} catch (Exception ex) {
|
||||
Console.WriteLine(ex);
|
||||
Console.WriteLine("---------------\nInner error:\n" + ex.InnerException);
|
||||
}
|
||||
@ -662,8 +648,7 @@ namespace NadekoBot.Modules {
|
||||
foreach (var usr in allUsrs) {
|
||||
await usr.SendMessage(str);
|
||||
}
|
||||
}
|
||||
catch (Exception ex) {
|
||||
} catch (Exception ex) {
|
||||
Console.WriteLine(ex);
|
||||
}
|
||||
});
|
||||
@ -679,8 +664,7 @@ namespace NadekoBot.Modules {
|
||||
objects.Add(obj.ToObject<T>());
|
||||
}
|
||||
Classes.DBHandler.Instance.InsertMany(objects);
|
||||
}
|
||||
catch { }
|
||||
} catch { }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -23,42 +23,34 @@ namespace NadekoBot.Modules {
|
||||
}
|
||||
|
||||
public override void Install(ModuleManager manager) {
|
||||
Random rng = new Random();
|
||||
var rng = new Random();
|
||||
|
||||
manager.CreateCommands("", cgb => {
|
||||
|
||||
cgb.AddCheck(Classes.Permissions.PermissionChecker.Instance);
|
||||
|
||||
var client = manager.Client;
|
||||
|
||||
cgb.CreateCommand("\\o\\")
|
||||
.Description("Nadeko replies with /o/")
|
||||
.Do(async e => {
|
||||
await e.Channel.SendMessage(e.User.Mention + "/o/");
|
||||
});
|
||||
.Do(async e => await e.Channel.SendMessage(e.User.Mention + "/o/"));
|
||||
|
||||
cgb.CreateCommand("/o/")
|
||||
.Description("Nadeko replies with \\o\\")
|
||||
.Do(async e => {
|
||||
await e.Channel.SendMessage(e.User.Mention + "\\o\\");
|
||||
});
|
||||
.Do(async e => await e.Channel.SendMessage(e.User.Mention + "\\o\\"));
|
||||
|
||||
cgb.CreateCommand("..")
|
||||
.Description("Adds a new quote with the specified name (single word) and message (no limit).\n**Usage**: .. abc My message")
|
||||
.Parameter("keyword", ParameterType.Required)
|
||||
.Parameter("text", ParameterType.Unparsed)
|
||||
.Do(async e => {
|
||||
var keyword = e.GetArg("keyword");
|
||||
var text = e.GetArg("text");
|
||||
if (string.IsNullOrWhiteSpace(text) || string.IsNullOrWhiteSpace(keyword))
|
||||
if (string.IsNullOrWhiteSpace(text))
|
||||
return;
|
||||
|
||||
Classes.DBHandler.Instance.InsertData(new Classes._DataModels.UserQuote() {
|
||||
DateAdded = DateTime.Now,
|
||||
Keyword = keyword.ToLowerInvariant(),
|
||||
Text = text,
|
||||
UserName = e.User.Name,
|
||||
});
|
||||
await Task.Run(() =>
|
||||
Classes.DBHandler.Instance.InsertData(new Classes._DataModels.UserQuote() {
|
||||
DateAdded = DateTime.Now,
|
||||
Keyword = e.GetArg("keyword").ToLowerInvariant(),
|
||||
Text = text,
|
||||
UserName = e.User.Name,
|
||||
}));
|
||||
|
||||
await e.Channel.SendMessage("`New quote added.`");
|
||||
});
|
||||
@ -71,17 +63,18 @@ namespace NadekoBot.Modules {
|
||||
if (string.IsNullOrWhiteSpace(keyword))
|
||||
return;
|
||||
|
||||
var quote = Classes.DBHandler.Instance.GetRandom<Classes._DataModels.UserQuote>(uqm => uqm.Keyword == keyword);
|
||||
var quote =
|
||||
Classes.DBHandler.Instance.GetRandom<Classes._DataModels.UserQuote>(
|
||||
uqm => uqm.Keyword == keyword);
|
||||
|
||||
if (quote != null)
|
||||
await e.Channel.SendMessage($"📣 {quote.Text}");
|
||||
else
|
||||
await e.Channel.SendMessage("💢`No quote found.`");
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
manager.CreateCommands(NadekoBot.botMention, cgb => {
|
||||
manager.CreateCommands(NadekoBot.BotMention, cgb => {
|
||||
var client = manager.Client;
|
||||
|
||||
cgb.AddCheck(Classes.Permissions.PermissionChecker.Instance);
|
||||
@ -92,76 +85,28 @@ namespace NadekoBot.Modules {
|
||||
.Description("Shows how long Nadeko has been running for.")
|
||||
.Do(async e => {
|
||||
var time = (DateTime.Now - Process.GetCurrentProcess().StartTime);
|
||||
string str = "I have been running for " + time.Days + " days, " + time.Hours + " hours, and " + time.Minutes + " minutes.";
|
||||
var str = "I have been running for " + time.Days + " days, " + time.Hours + " hours, and " + time.Minutes + " minutes.";
|
||||
await e.Channel.SendMessage(str);
|
||||
});
|
||||
|
||||
cgb.CreateCommand("die")
|
||||
.Description("Works only for the owner. Shuts the bot down.")
|
||||
.Do(async e => {
|
||||
if (e.User.Id == NadekoBot.OwnerID) {
|
||||
Timer t = new Timer();
|
||||
t.Interval = 2000;
|
||||
t.Elapsed += (s, ev) => { Environment.Exit(0); };
|
||||
t.Start();
|
||||
if (NadekoBot.IsOwner(e.User.Id)) {
|
||||
await e.Channel.SendMessage(e.User.Mention + ", Yes, my love.");
|
||||
await Task.Delay(5000);
|
||||
Environment.Exit(0);
|
||||
} else
|
||||
await e.Channel.SendMessage(e.User.Mention + ", No.");
|
||||
});
|
||||
|
||||
Stopwatch randServerSW = new Stopwatch();
|
||||
randServerSW.Start();
|
||||
|
||||
cgb.CreateCommand("randserver")
|
||||
.Description("Generates an invite to a random server and prints some stats.")
|
||||
.Do(async e => {
|
||||
if (client.Servers.Count() < 10) {
|
||||
await e.Channel.SendMessage("I need to be connected to at least 10 servers for this command to work.");
|
||||
return;
|
||||
}
|
||||
var randServerSw = new Stopwatch();
|
||||
randServerSw.Start();
|
||||
|
||||
if (randServerSW.Elapsed.Seconds < 1800) {
|
||||
await e.Channel.SendMessage("You have to wait " + (1800 - randServerSW.Elapsed.Seconds) + " more seconds to use this function.");
|
||||
return;
|
||||
}
|
||||
randServerSW.Restart();
|
||||
while (true) {
|
||||
var server = client.Servers.OrderBy(x => rng.Next()).FirstOrDefault();
|
||||
if (server == null)
|
||||
continue;
|
||||
try {
|
||||
var inv = await server.CreateInvite(100, 5);
|
||||
await e.Channel.SendMessage("**Server:** " + server.Name +
|
||||
"\n**Owner:** " + server.Owner.Name +
|
||||
"\n**Channels:** " + server.AllChannels.Count() +
|
||||
"\n**Total Members:** " + server.Users.Count() +
|
||||
"\n**Online Members:** " + server.Users.Where(u => u.Status == UserStatus.Online).Count() +
|
||||
"\n**Invite:** " + inv.Url);
|
||||
break;
|
||||
} catch { continue; }
|
||||
}
|
||||
});
|
||||
/*
|
||||
cgb.CreateCommand("avalanche!")
|
||||
.Description("Mentions a person in every channel of the server, then deletes it")
|
||||
.Parameter("name", ParameterType.Required)
|
||||
.Do(e => {
|
||||
var usr = e.Server.FindUsers(e.GetArg("name")).FirstOrDefault();
|
||||
if (usr == null) return;
|
||||
e.Server.AllChannels.ForEach(async c => {
|
||||
try {
|
||||
var m = await c.SendMessage(usr.Mention);
|
||||
await m.Delete();
|
||||
} catch (Exception ex) {
|
||||
Console.WriteLine(ex);
|
||||
}
|
||||
});
|
||||
});
|
||||
*/
|
||||
cgb.CreateCommand("do you love me")
|
||||
.Description("Replies with positive answer only to the bot owner.")
|
||||
.Do(async e => {
|
||||
if (e.User.Id == NadekoBot.OwnerID)
|
||||
if (NadekoBot.IsOwner(e.User.Id))
|
||||
await e.Channel.SendMessage(e.User.Mention + ", Of course I do, my Master.");
|
||||
else
|
||||
await e.Channel.SendMessage(e.User.Mention + ", Don't be silly.");
|
||||
@ -170,15 +115,15 @@ namespace NadekoBot.Modules {
|
||||
cgb.CreateCommand("how are you")
|
||||
.Description("Replies positive only if bot owner is online.")
|
||||
.Do(async e => {
|
||||
if (e.User.Id == NadekoBot.OwnerID) {
|
||||
if (NadekoBot.IsOwner(e.User.Id)) {
|
||||
await e.Channel.SendMessage(e.User.Mention + " I am great as long as you are here.");
|
||||
return;
|
||||
}
|
||||
var kw = e.Server.GetUser(NadekoBot.Creds.OwnerIds[0]);
|
||||
if (kw != null && kw.Status == UserStatus.Online) {
|
||||
await e.Channel.SendMessage(e.User.Mention + " I am great as long as " + kw.Mention + " is with me.");
|
||||
} else {
|
||||
var kw = e.Server.GetUser(NadekoBot.OwnerID);
|
||||
if (kw != null && kw.Status == UserStatus.Online) {
|
||||
await e.Channel.SendMessage(e.User.Mention + " I am great as long as " + kw.Mention + " is with me.");
|
||||
} else {
|
||||
await e.Channel.SendMessage(e.User.Mention + " I am sad. My Master is not with me.");
|
||||
}
|
||||
await e.Channel.SendMessage(e.User.Mention + " I am sad. My Master is not with me.");
|
||||
}
|
||||
});
|
||||
|
||||
@ -186,33 +131,31 @@ namespace NadekoBot.Modules {
|
||||
.Parameter("mention", ParameterType.Required)
|
||||
.Description("Insults @X person.\n**Usage**: @NadekoBot insult @X.")
|
||||
.Do(async e => {
|
||||
List<string> insults = new List<string> { " You are a poop.", " You're a jerk.", " I will eat you when I get my powers back." };
|
||||
Random r = new Random();
|
||||
var insults = new List<string> { " You are a poop.", " You're a jerk.", " I will eat you when I get my powers back." };
|
||||
var u = e.Channel.FindUsers(e.GetArg("mention")).FirstOrDefault();
|
||||
if (u == null) {
|
||||
await e.Channel.SendMessage("Invalid user specified.");
|
||||
return;
|
||||
}
|
||||
|
||||
if (u.Id == NadekoBot.OwnerID) {
|
||||
if (NadekoBot.IsOwner(u.Id)) {
|
||||
await e.Channel.SendMessage("I would never insult my master <3");
|
||||
return;
|
||||
}
|
||||
await e.Channel.SendMessage(u.Mention + insults[r.Next(0, insults.Count)]);
|
||||
await e.Channel.SendMessage(u.Mention + insults[rng.Next(0, insults.Count)]);
|
||||
});
|
||||
|
||||
cgb.CreateCommand("praise")
|
||||
.Description("Praises @X person.\n**Usage**: @NadekoBot praise @X.")
|
||||
.Parameter("mention", ParameterType.Required)
|
||||
.Do(async e => {
|
||||
List<string> praises = new List<string> { " You are cool.",
|
||||
var praises = new[] { " You are cool.",
|
||||
" You are nice!",
|
||||
" You did a good job.",
|
||||
" You did something nice.",
|
||||
" is awesome!",
|
||||
" Wow."};
|
||||
|
||||
Random r = new Random();
|
||||
var u = e.Channel.FindUsers(e.GetArg("mention")).FirstOrDefault();
|
||||
|
||||
if (u == null) {
|
||||
@ -220,11 +163,11 @@ namespace NadekoBot.Modules {
|
||||
return;
|
||||
}
|
||||
|
||||
if (u.Id == NadekoBot.OwnerID) {
|
||||
if (NadekoBot.IsOwner(u.Id)) {
|
||||
await e.Channel.SendMessage(e.User.Mention + " I don't need your permission to praise my beloved Master <3");
|
||||
return;
|
||||
}
|
||||
await e.Channel.SendMessage(u.Mention + praises[r.Next(0, praises.Count)]);
|
||||
await e.Channel.SendMessage(u.Mention + praises[rng.Next(0, praises.Length)]);
|
||||
});
|
||||
|
||||
cgb.CreateCommand("pat")
|
||||
@ -232,28 +175,28 @@ namespace NadekoBot.Modules {
|
||||
.Parameter("user", ParameterType.Unparsed)
|
||||
.Do(async e => {
|
||||
var user = e.GetArg("user");
|
||||
if (user == null || e.Message.MentionedUsers.Count() == 0) return;
|
||||
string[] pats = new string[] { "http://i.imgur.com/IiQwK12.gif",
|
||||
"http://i.imgur.com/JCXj8yD.gif",
|
||||
"http://i.imgur.com/qqBl2bm.gif",
|
||||
"http://i.imgur.com/eOJlnwP.gif",
|
||||
"https://45.media.tumblr.com/229ec0458891c4dcd847545c81e760a5/tumblr_mpfy232F4j1rxrpjzo1_r2_500.gif",
|
||||
"https://media.giphy.com/media/KZQlfylo73AMU/giphy.gif",
|
||||
"https://media.giphy.com/media/12hvLuZ7uzvCvK/giphy.gif",
|
||||
"http://gallery1.anivide.com/_full/65030_1382582341.gif",
|
||||
"https://49.media.tumblr.com/8e8a099c4eba22abd3ec0f70fd087cce/tumblr_nxovj9oY861ur1mffo1_500.gif ",
|
||||
if (string.IsNullOrWhiteSpace(user) || !e.Message.MentionedUsers.Any()) return;
|
||||
string[] pats = { "http://i.imgur.com/IiQwK12.gif",
|
||||
"http://i.imgur.com/JCXj8yD.gif",
|
||||
"http://i.imgur.com/qqBl2bm.gif",
|
||||
"http://i.imgur.com/eOJlnwP.gif",
|
||||
"https://45.media.tumblr.com/229ec0458891c4dcd847545c81e760a5/tumblr_mpfy232F4j1rxrpjzo1_r2_500.gif",
|
||||
"https://media.giphy.com/media/KZQlfylo73AMU/giphy.gif",
|
||||
"https://media.giphy.com/media/12hvLuZ7uzvCvK/giphy.gif",
|
||||
"http://gallery1.anivide.com/_full/65030_1382582341.gif",
|
||||
"https://49.media.tumblr.com/8e8a099c4eba22abd3ec0f70fd087cce/tumblr_nxovj9oY861ur1mffo1_500.gif ",
|
||||
};
|
||||
await e.Channel.SendMessage($"{e.Message.MentionedUsers.First().Mention} {pats[new Random().Next(0, pats.Length)]}");
|
||||
await e.Channel.SendMessage($"{e.Message.MentionedUsers.First().Mention} {pats[rng.Next(0, pats.Length)]}");
|
||||
});
|
||||
|
||||
cgb.CreateCommand("cry")
|
||||
.Description("Tell Nadeko to cry. You are a heartless monster if you use this command.")
|
||||
.Do(async e => {
|
||||
string[] pats = new string[] { "http://i.imgur.com/Xg3i1Qy.gif",
|
||||
"http://i.imgur.com/3K8DRrU.gif",
|
||||
"http://i.imgur.com/k58BcAv.gif",
|
||||
"http://i.imgur.com/I2fLXwo.gif" };
|
||||
await e.Channel.SendMessage($"(•̥́ _•ૅ。)\n{pats[new Random().Next(0, pats.Length)]}");
|
||||
string[] pats = { "http://i.imgur.com/Xg3i1Qy.gif",
|
||||
"http://i.imgur.com/3K8DRrU.gif",
|
||||
"http://i.imgur.com/k58BcAv.gif",
|
||||
"http://i.imgur.com/I2fLXwo.gif" };
|
||||
await e.Channel.SendMessage($"(•̥́ _•ૅ。)\n{pats[rng.Next(0, pats.Length)]}");
|
||||
});
|
||||
|
||||
cgb.CreateCommand("are you real")
|
||||
@ -264,7 +207,7 @@ namespace NadekoBot.Modules {
|
||||
|
||||
cgb.CreateCommand("are you there")
|
||||
.Description("Checks if Nadeko is operational.")
|
||||
.Alias(new string[] { "!", "?" })
|
||||
.Alias("!", "?")
|
||||
.Do(SayYes());
|
||||
|
||||
cgb.CreateCommand("draw")
|
||||
@ -276,16 +219,16 @@ namespace NadekoBot.Modules {
|
||||
.Description("Shows a unicode fire message. Optional parameter [x] tells her how many times to repeat the fire.\n**Usage**: @NadekoBot fire [x]")
|
||||
.Parameter("times", ParameterType.Optional)
|
||||
.Do(async e => {
|
||||
int count = 0;
|
||||
if (e.Args?.Length > 0)
|
||||
int.TryParse(e.Args[0], out count);
|
||||
var count = 1;
|
||||
int.TryParse(e.Args[0], out count);
|
||||
|
||||
if (count < 1)
|
||||
count = 1;
|
||||
else if (count > 12)
|
||||
count = 12;
|
||||
string str = "";
|
||||
for (int i = 0; i < count; i++) {
|
||||
if (count < 1 || count > 12) {
|
||||
await e.Channel.SendMessage("Number must be between 0 and 12");
|
||||
return;
|
||||
}
|
||||
|
||||
var str = "";
|
||||
for (var i = 0; i < count; i++) {
|
||||
str += firestr;
|
||||
}
|
||||
await e.Channel.SendMessage(str);
|
||||
@ -299,25 +242,32 @@ namespace NadekoBot.Modules {
|
||||
if (string.IsNullOrWhiteSpace(e.GetArg("user")))
|
||||
return;
|
||||
var usr = e.Channel.FindUsers(e.GetArg("user")).FirstOrDefault();
|
||||
string text = "";
|
||||
var text = "";
|
||||
text = usr?.Name ?? e.GetArg("user");
|
||||
await e.Channel.SendFile("ripzor_m8.png", RipName(text, e.GetArg("year") == "" ? null : e.GetArg("year")));
|
||||
await
|
||||
e.Channel.SendFile("ripzor_m8.png",
|
||||
RipName(text, string.IsNullOrWhiteSpace(e.GetArg("year")) ? null : e.GetArg("year")));
|
||||
});
|
||||
if (!NadekoBot.creds.DontJoinServers) {
|
||||
if (!NadekoBot.Creds.DontJoinServers) {
|
||||
cgb.CreateCommand("j")
|
||||
.Description("Joins a server using a code.")
|
||||
.Parameter("id", ParameterType.Required)
|
||||
.Do(async e => {
|
||||
try {
|
||||
await (await client.GetInvite(e.Args[0])).Accept();
|
||||
var invite = await client.GetInvite(e.Args[0]);
|
||||
if (invite != null) {
|
||||
try {
|
||||
await invite.Accept();
|
||||
}
|
||||
catch {
|
||||
await e.Channel.SendMessage("Failed to accept invite.");
|
||||
}
|
||||
await e.Channel.SendMessage("I got in!");
|
||||
return;
|
||||
}
|
||||
catch {
|
||||
await e.Channel.SendMessage("Invalid code.");
|
||||
}
|
||||
await e.Channel.SendMessage("Invalid code.");
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
cgb.CreateCommand("slm")
|
||||
.Description("Shows the message where you were last mentioned in this channel (checks last 10k messages)")
|
||||
.Do(async e => {
|
||||
@ -329,7 +279,7 @@ namespace NadekoBot.Modules {
|
||||
if (msgs.Count() > 0)
|
||||
msg = msgs.First();
|
||||
else {
|
||||
int attempt = 0;
|
||||
var attempt = 0;
|
||||
Message lastMessage = null;
|
||||
while (msg == null && attempt++ < 5) {
|
||||
var msgsarr = await e.Channel.DownloadMessages(100, lastMessage?.Id);
|
||||
@ -350,7 +300,7 @@ namespace NadekoBot.Modules {
|
||||
.Description("Says bye to someone. **Usage**: @NadekoBot bb @X")
|
||||
.Parameter("ppl", ParameterType.Unparsed)
|
||||
.Do(async e => {
|
||||
string str = "Bye";
|
||||
var str = "Bye";
|
||||
foreach (var u in e.Message.MentionedUsers) {
|
||||
if (u.Id != NadekoBot.Client.CurrentUser.Id)
|
||||
str += " " + u.Mention;
|
||||
@ -367,8 +317,8 @@ namespace NadekoBot.Modules {
|
||||
cgb.CreateCommand("hide")
|
||||
.Description("Hides Nadeko in plain sight!11!!")
|
||||
.Do(async e => {
|
||||
using (Stream ms = Resources.hidden.ToStream(ImageFormat.Png)) {
|
||||
await client.CurrentUser.Edit(NadekoBot.password, avatar: ms);
|
||||
using (var ms = Resources.hidden.ToStream(ImageFormat.Png)) {
|
||||
await client.CurrentUser.Edit(NadekoBot.Creds.Password, avatar: ms);
|
||||
}
|
||||
await e.Channel.SendMessage("*hides*");
|
||||
});
|
||||
@ -376,8 +326,8 @@ namespace NadekoBot.Modules {
|
||||
cgb.CreateCommand("unhide")
|
||||
.Description("Unhides Nadeko in plain sight!1!!1")
|
||||
.Do(async e => {
|
||||
using (FileStream fs = new FileStream("data/avatar.png", FileMode.Open)) {
|
||||
await client.CurrentUser.Edit(NadekoBot.password, avatar: fs);
|
||||
using (var fs = new FileStream("data/avatar.png", FileMode.Open)) {
|
||||
await client.CurrentUser.Edit(NadekoBot.Creds.Password, avatar: fs);
|
||||
}
|
||||
await e.Channel.SendMessage("*unhides*");
|
||||
});
|
||||
@ -385,16 +335,16 @@ namespace NadekoBot.Modules {
|
||||
cgb.CreateCommand("dump")
|
||||
.Description("Dumps all of the invites it can to dump.txt.** Owner Only.**")
|
||||
.Do(async e => {
|
||||
if (NadekoBot.OwnerID != e.User.Id) return;
|
||||
int i = 0;
|
||||
int j = 0;
|
||||
string invites = "";
|
||||
if (!NadekoBot.IsOwner(e.User.Id)) return;
|
||||
var i = 0;
|
||||
var j = 0;
|
||||
var invites = "";
|
||||
foreach (var s in client.Servers) {
|
||||
try {
|
||||
var invite = await s.CreateInvite(0);
|
||||
invites += invite.Url + "\n";
|
||||
i++;
|
||||
} catch {
|
||||
} catch {
|
||||
j++;
|
||||
continue;
|
||||
}
|
||||
@ -407,8 +357,8 @@ namespace NadekoBot.Modules {
|
||||
.Description("Try to get 'abalabahaha'")
|
||||
.Do(async e => {
|
||||
string[] strings = { "ba", "la", "ha" };
|
||||
string construct = "@a";
|
||||
int cnt = rng.Next(4, 7);
|
||||
var construct = "@a";
|
||||
var cnt = rng.Next(4, 7);
|
||||
while (cnt-- > 0) {
|
||||
construct += strings[rng.Next(0, strings.Length)];
|
||||
}
|
||||
@ -426,65 +376,31 @@ namespace NadekoBot.Modules {
|
||||
}
|
||||
await e.Channel.SendMessage(await usr.AvatarUrl.ShortenUrl());
|
||||
});
|
||||
/*
|
||||
string saved = "";
|
||||
cgb.CreateCommand("save")
|
||||
.Description("Saves up to 5 last messages as a quote")
|
||||
.Parameter("number", ParameterType.Required)
|
||||
.Do(e => {
|
||||
var arg = e.GetArg("number");
|
||||
int num;
|
||||
if (!int.TryParse(arg, out num) || num < 1 || num > 5)
|
||||
num = 1;
|
||||
saved = string.Join("\n", e.Channel.Messages.Skip(1).Take(num));
|
||||
});
|
||||
|
||||
cgb.CreateCommand("quote")
|
||||
.Description("Shows the previously saved quote")
|
||||
.Parameter("arg", ParameterType.Required)
|
||||
.Do(async e => {
|
||||
var arg = e.GetArg("arg");
|
||||
await e.Channel.SendMessage("```"+saved+"```");
|
||||
});
|
||||
*/
|
||||
//TODO add eval
|
||||
/*
|
||||
cgb.CreateCommand(">")
|
||||
.Parameter("code", ParameterType.Unparsed)
|
||||
.Do(async e =>
|
||||
{
|
||||
if (e.Message.User.Id == NadekoBot.OwnerId)
|
||||
{
|
||||
var result = await CSharpScript.EvaluateAsync(e.Args[0]);
|
||||
await e.Channel.SendMessage( result?.ToString() ?? "null");
|
||||
return;
|
||||
}
|
||||
});*/
|
||||
});
|
||||
}
|
||||
|
||||
public Stream RipName(string name, string year = null) {
|
||||
Bitmap bm = Resources.rip;
|
||||
var bm = Resources.rip;
|
||||
|
||||
int offset = name.Length * 5;
|
||||
var offset = name.Length * 5;
|
||||
|
||||
int fontSize = 20;
|
||||
var fontSize = 20;
|
||||
|
||||
if (name.Length > 10) {
|
||||
fontSize -= (name.Length - 10) / 2;
|
||||
}
|
||||
|
||||
//TODO use measure string
|
||||
Graphics g = Graphics.FromImage(bm);
|
||||
var g = Graphics.FromImage(bm);
|
||||
g.DrawString(name, new Font("Comic Sans MS", fontSize, FontStyle.Bold), Brushes.Black, 100 - offset, 200);
|
||||
g.DrawString((year == null ? "?" : year) + " - " + DateTime.Now.Year, new Font("Consolas", 12, FontStyle.Bold), Brushes.Black, 80, 235);
|
||||
g.DrawString((year ?? "?") + " - " + DateTime.Now.Year, new Font("Consolas", 12, FontStyle.Bold), Brushes.Black, 80, 235);
|
||||
g.Flush();
|
||||
g.Dispose();
|
||||
|
||||
return bm.ToStream(ImageFormat.Png);
|
||||
}
|
||||
|
||||
private Func<CommandEventArgs, Task> SayYes()
|
||||
private static Func<CommandEventArgs, Task> SayYes()
|
||||
=> async e => await e.Channel.SendMessage("Yes. :)");
|
||||
}
|
||||
}
|
||||
|
@ -1,7 +1,6 @@
|
||||
using System;
|
||||
using System.Linq;
|
||||
using Discord.Modules;
|
||||
using NadekoBot.Extensions;
|
||||
using NadekoBot.Commands;
|
||||
using Newtonsoft.Json.Linq;
|
||||
using System.IO;
|
||||
|
@ -1,8 +1,4 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Linq;
|
||||
using Discord.Modules;
|
||||
using Discord.Commands;
|
||||
|
||||
|
@ -1,5 +1,4 @@
|
||||
using Discord;
|
||||
using Discord.Audio;
|
||||
using Discord.Commands;
|
||||
using Discord.Modules;
|
||||
using NadekoBot.Classes;
|
||||
@ -8,7 +7,6 @@ using NadekoBot.Extensions;
|
||||
using System;
|
||||
using System.Collections.Concurrent;
|
||||
using System.Linq;
|
||||
using System.Text.RegularExpressions;
|
||||
using System.Threading.Tasks;
|
||||
using Timer = System.Timers.Timer;
|
||||
|
||||
|
@ -1,6 +1,5 @@
|
||||
using System;
|
||||
using Discord.Modules;
|
||||
using NadekoBot.Extensions;
|
||||
using Discord.Commands;
|
||||
using Newtonsoft.Json.Linq;
|
||||
using NadekoBot.Classes;
|
||||
|
@ -1,11 +1,9 @@
|
||||
using System;
|
||||
using Discord.Modules;
|
||||
using Discord.Commands;
|
||||
using NadekoBot.Extensions;
|
||||
using NadekoBot.Classes;
|
||||
using PermsHandler = NadekoBot.Classes.Permissions.PermissionsHandler;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
|
||||
namespace NadekoBot.Modules {
|
||||
class PermissionModule : DiscordModule {
|
||||
|
@ -65,7 +65,7 @@ namespace NadekoBot.Modules {
|
||||
.Description("Joins a server")
|
||||
.Parameter("code", Discord.Commands.ParameterType.Required)
|
||||
.Do(async e => {
|
||||
if (e.User.Id != NadekoBot.OwnerId) return;
|
||||
if (!NadekoBot.IsOwner(e.User.Id)) return;
|
||||
try {
|
||||
await (await client.GetInvite(e.GetArg("code"))).Accept();
|
||||
} catch (Exception ex) {
|
||||
@ -77,7 +77,7 @@ namespace NadekoBot.Modules {
|
||||
.Description("Bind a trello bot to a single channel. You will receive notifications from your board when something is added or edited.")
|
||||
.Parameter("board_id", Discord.Commands.ParameterType.Required)
|
||||
.Do(async e => {
|
||||
if (e.User.Id != NadekoBot.OwnerId) return;
|
||||
if (!NadekoBot.IsOwner(e.User.Id)) return;
|
||||
if (bound != null) return;
|
||||
try {
|
||||
bound = e.Channel;
|
||||
@ -93,7 +93,7 @@ namespace NadekoBot.Modules {
|
||||
cgb.CreateCommand("unbind")
|
||||
.Description("Unbinds a bot from the channel and board.")
|
||||
.Do(async e => {
|
||||
if (e.User.Id != NadekoBot.OwnerId) return;
|
||||
if (!NadekoBot.IsOwner(e.User.Id)) return;
|
||||
if (bound == null || bound != e.Channel) return;
|
||||
t.Stop();
|
||||
bound = null;
|
||||
@ -106,7 +106,7 @@ namespace NadekoBot.Modules {
|
||||
.Alias("list")
|
||||
.Description("Lists all lists yo ;)")
|
||||
.Do(async e => {
|
||||
if (e.User.Id != NadekoBot.OwnerId) return;
|
||||
if (!NadekoBot.IsOwner(e.User.Id)) return;
|
||||
if (bound == null || board == null || bound != e.Channel) return;
|
||||
await e.Channel.SendMessage("Lists for a board '" + board.Name + "'\n" + string.Join("\n", board.Lists.Select(l => "**• " + l.ToString() + "**")));
|
||||
});
|
||||
@ -115,7 +115,7 @@ namespace NadekoBot.Modules {
|
||||
.Description("Lists all cards from the supplied list. You can supply either a name or an index.")
|
||||
.Parameter("list_name", Discord.Commands.ParameterType.Unparsed)
|
||||
.Do(async e => {
|
||||
if (e.User.Id != NadekoBot.OwnerId) return;
|
||||
if (!NadekoBot.IsOwner(e.User.Id)) return;
|
||||
if (bound == null || board == null || bound != e.Channel || e.GetArg("list_name") == null) return;
|
||||
|
||||
int num;
|
||||
|
Reference in New Issue
Block a user