commandlist update
This commit is contained in:
parent
5e154cbcd1
commit
c9c572296a
@ -1,19 +1,22 @@
|
|||||||
using System;
|
using Discord.Commands;
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
using Discord.Commands;
|
|
||||||
using System.Drawing;
|
|
||||||
using NadekoBot.Classes;
|
using NadekoBot.Classes;
|
||||||
using NadekoBot.Extensions;
|
using NadekoBot.Extensions;
|
||||||
using NadekoBot.Modules;
|
using NadekoBot.Modules;
|
||||||
using Newtonsoft.Json.Linq;
|
using Newtonsoft.Json.Linq;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Drawing;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
namespace NadekoBot.Commands {
|
namespace NadekoBot.Commands
|
||||||
internal class LoLCommands : DiscordCommand {
|
{
|
||||||
|
internal class LoLCommands : DiscordCommand
|
||||||
|
{
|
||||||
|
|
||||||
private class CachedChampion {
|
private class CachedChampion
|
||||||
|
{
|
||||||
public System.IO.Stream ImageStream { get; set; }
|
public System.IO.Stream ImageStream { get; set; }
|
||||||
public DateTime AddedAt { get; set; }
|
public DateTime AddedAt { get; set; }
|
||||||
public string Name { get; set; }
|
public string Name { get; set; }
|
||||||
@ -24,16 +27,20 @@ namespace NadekoBot.Commands {
|
|||||||
|
|
||||||
|
|
||||||
private System.Timers.Timer clearTimer { get; } = new System.Timers.Timer();
|
private System.Timers.Timer clearTimer { get; } = new System.Timers.Timer();
|
||||||
public LoLCommands(DiscordModule module) : base(module) {
|
public LoLCommands(DiscordModule module) : base(module)
|
||||||
|
{
|
||||||
clearTimer.Interval = new TimeSpan(0, 10, 0).TotalMilliseconds;
|
clearTimer.Interval = new TimeSpan(0, 10, 0).TotalMilliseconds;
|
||||||
clearTimer.Start();
|
clearTimer.Start();
|
||||||
clearTimer.Elapsed += (s, e) => {
|
clearTimer.Elapsed += (s, e) =>
|
||||||
try {
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
lock (cacheLock)
|
lock (cacheLock)
|
||||||
CachedChampionImages = CachedChampionImages
|
CachedChampionImages = CachedChampionImages
|
||||||
.Where(kvp => DateTime.Now - kvp.Value.AddedAt > new TimeSpan(1, 0, 0))
|
.Where(kvp => DateTime.Now - kvp.Value.AddedAt > new TimeSpan(1, 0, 0))
|
||||||
.ToDictionary(kvp => kvp.Key, kvp => kvp.Value);
|
.ToDictionary(kvp => kvp.Key, kvp => kvp.Value);
|
||||||
} catch { }
|
}
|
||||||
|
catch { }
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -44,11 +51,13 @@ namespace NadekoBot.Commands {
|
|||||||
"If you consider playing teemo, do it. If you consider teemo, you deserve him.",
|
"If you consider playing teemo, do it. If you consider teemo, you deserve him.",
|
||||||
"Doesn't matter what you ban really. Enemy will ban your main and you will lose." };
|
"Doesn't matter what you ban really. Enemy will ban your main and you will lose." };
|
||||||
|
|
||||||
public Func<CommandEventArgs, Task> DoFunc() {
|
public Func<CommandEventArgs, Task> DoFunc()
|
||||||
|
{
|
||||||
throw new NotImplementedException();
|
throw new NotImplementedException();
|
||||||
}
|
}
|
||||||
|
|
||||||
private class MatchupModel {
|
private class MatchupModel
|
||||||
|
{
|
||||||
public int Games { get; set; }
|
public int Games { get; set; }
|
||||||
public float WinRate { get; set; }
|
public float WinRate { get; set; }
|
||||||
[Newtonsoft.Json.JsonProperty("key")]
|
[Newtonsoft.Json.JsonProperty("key")]
|
||||||
@ -56,48 +65,60 @@ namespace NadekoBot.Commands {
|
|||||||
public float StatScore { get; set; }
|
public float StatScore { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
internal override void Init(CommandGroupBuilder cgb) {
|
internal override void Init(CommandGroupBuilder cgb)
|
||||||
|
{
|
||||||
cgb.CreateCommand(Module.Prefix + "lolchamp")
|
cgb.CreateCommand(Module.Prefix + "lolchamp")
|
||||||
.Description("Shows League Of Legends champion statistics. If there are spaces/apostrophes or in the name - omit them. Optional second parameter is a role.\n**Usage**:~lolchamp Riven or ~lolchamp Annie sup")
|
.Description("Shows League Of Legends champion statistics. If there are spaces/apostrophes or in the name - omit them. Optional second parameter is a role.\n**Usage**:~lolchamp Riven or ~lolchamp Annie sup")
|
||||||
.Parameter("champ", ParameterType.Required)
|
.Parameter("champ", ParameterType.Required)
|
||||||
.Parameter("position", ParameterType.Unparsed)
|
.Parameter("position", ParameterType.Unparsed)
|
||||||
.Do(async e => {
|
.Do(async e =>
|
||||||
try {
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
//get role
|
//get role
|
||||||
var role = ResolvePos(e.GetArg("position"));
|
var role = ResolvePos(e.GetArg("position"));
|
||||||
var resolvedRole = role;
|
var resolvedRole = role;
|
||||||
var name = e.GetArg("champ").Replace(" ", "").ToLower();
|
var name = e.GetArg("champ").Replace(" ", "").ToLower();
|
||||||
CachedChampion champ = null;
|
CachedChampion champ = null;
|
||||||
lock (cacheLock) {
|
lock (cacheLock)
|
||||||
|
{
|
||||||
CachedChampionImages.TryGetValue(name + "_" + resolvedRole, out champ);
|
CachedChampionImages.TryGetValue(name + "_" + resolvedRole, out champ);
|
||||||
}
|
}
|
||||||
if (champ != null) {
|
if (champ != null)
|
||||||
|
{
|
||||||
champ.ImageStream.Position = 0;
|
champ.ImageStream.Position = 0;
|
||||||
await e.Channel.SendFile("champ.png", champ.ImageStream);
|
await e.Channel.SendFile("champ.png", champ.ImageStream);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
var allData = JArray.Parse(await Classes.SearchHelper.GetResponseStringAsync($"http://api.champion.gg/champion/{name}?api_key={NadekoBot.Creds.LOLAPIKey}"));
|
var allData = JArray.Parse(await Classes.SearchHelper.GetResponseStringAsync($"http://api.champion.gg/champion/{name}?api_key={NadekoBot.Creds.LOLAPIKey}"));
|
||||||
JToken data = null;
|
JToken data = null;
|
||||||
if (role != null) {
|
if (role != null)
|
||||||
for (var i = 0; i < allData.Count; i++) {
|
{
|
||||||
if (allData[i]["role"].ToString().Equals(role)) {
|
for (var i = 0; i < allData.Count; i++)
|
||||||
|
{
|
||||||
|
if (allData[i]["role"].ToString().Equals(role))
|
||||||
|
{
|
||||||
data = allData[i];
|
data = allData[i];
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (data == null) {
|
if (data == null)
|
||||||
|
{
|
||||||
await e.Channel.SendMessage("💢 Data for that role does not exist.");
|
await e.Channel.SendMessage("💢 Data for that role does not exist.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
data = allData[0];
|
data = allData[0];
|
||||||
role = allData[0]["role"].ToString();
|
role = allData[0]["role"].ToString();
|
||||||
resolvedRole = ResolvePos(role);
|
resolvedRole = ResolvePos(role);
|
||||||
}
|
}
|
||||||
lock (cacheLock) {
|
lock (cacheLock)
|
||||||
|
{
|
||||||
CachedChampionImages.TryGetValue(name + "_" + resolvedRole, out champ);
|
CachedChampionImages.TryGetValue(name + "_" + resolvedRole, out champ);
|
||||||
}
|
}
|
||||||
if (champ != null) {
|
if (champ != null)
|
||||||
|
{
|
||||||
Console.WriteLine("Sending lol image from cache.");
|
Console.WriteLine("Sending lol image from cache.");
|
||||||
champ.ImageStream.Position = 0;
|
champ.ImageStream.Position = 0;
|
||||||
await e.Channel.SendFile("champ.png", champ.ImageStream);
|
await e.Channel.SendFile("champ.png", champ.ImageStream);
|
||||||
@ -106,7 +127,8 @@ namespace NadekoBot.Commands {
|
|||||||
//name = data["title"].ToString();
|
//name = data["title"].ToString();
|
||||||
// get all possible roles, and "select" the shown one
|
// get all possible roles, and "select" the shown one
|
||||||
var roles = new string[allData.Count];
|
var roles = new string[allData.Count];
|
||||||
for (var i = 0; i < allData.Count; i++) {
|
for (var i = 0; i < allData.Count; i++)
|
||||||
|
{
|
||||||
roles[i] = allData[i]["role"].ToString();
|
roles[i] = allData[i]["role"].ToString();
|
||||||
if (roles[i] == role)
|
if (roles[i] == role)
|
||||||
roles[i] = ">" + roles[i] + "<";
|
roles[i] = ">" + roles[i] + "<";
|
||||||
@ -114,14 +136,16 @@ namespace NadekoBot.Commands {
|
|||||||
var general = JArray.Parse(await SearchHelper.GetResponseStringAsync($"http://api.champion.gg/stats/" +
|
var general = JArray.Parse(await SearchHelper.GetResponseStringAsync($"http://api.champion.gg/stats/" +
|
||||||
$"champs/{name}?api_key={NadekoBot.Creds.LOLAPIKey}"))
|
$"champs/{name}?api_key={NadekoBot.Creds.LOLAPIKey}"))
|
||||||
.FirstOrDefault(jt => jt["role"].ToString() == role)?["general"];
|
.FirstOrDefault(jt => jt["role"].ToString() == role)?["general"];
|
||||||
if (general == null) {
|
if (general == null)
|
||||||
|
{
|
||||||
Console.WriteLine("General is null.");
|
Console.WriteLine("General is null.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
//get build data for this role
|
//get build data for this role
|
||||||
var buildData = data["items"]["mostGames"]["items"];
|
var buildData = data["items"]["mostGames"]["items"];
|
||||||
var items = new string[6];
|
var items = new string[6];
|
||||||
for (var i = 0; i < 6; i++) {
|
for (var i = 0; i < 6; i++)
|
||||||
|
{
|
||||||
items[i] = buildData[i]["id"].ToString();
|
items[i] = buildData[i]["id"].ToString();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -146,7 +170,8 @@ namespace NadekoBot.Commands {
|
|||||||
var orderArr = (data["skills"]["mostGames"]["order"] as JArray);
|
var orderArr = (data["skills"]["mostGames"]["order"] as JArray);
|
||||||
|
|
||||||
var img = Image.FromFile("data/lol/bg.png");
|
var img = Image.FromFile("data/lol/bg.png");
|
||||||
using (var g = Graphics.FromImage(img)) {
|
using (var g = Graphics.FromImage(img))
|
||||||
|
{
|
||||||
g.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality;
|
g.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality;
|
||||||
//g.CompositingMode = System.Drawing.Drawing2D.CompositingMode.SourceCopy;
|
//g.CompositingMode = System.Drawing.Drawing2D.CompositingMode.SourceCopy;
|
||||||
const int margin = 5;
|
const int margin = 5;
|
||||||
@ -166,12 +191,14 @@ namespace NadekoBot.Commands {
|
|||||||
//draw skill order
|
//draw skill order
|
||||||
float orderFormula = 120 / orderArr.Count;
|
float orderFormula = 120 / orderArr.Count;
|
||||||
const float orderVerticalSpacing = 10;
|
const float orderVerticalSpacing = 10;
|
||||||
for (var i = 0; i < orderArr.Count; i++) {
|
for (var i = 0; i < orderArr.Count; i++)
|
||||||
|
{
|
||||||
var orderX = margin + margin + imageSize + orderFormula * i + i;
|
var orderX = margin + margin + imageSize + orderFormula * i + i;
|
||||||
float orderY = margin + 35;
|
float orderY = margin + 35;
|
||||||
var spellName = orderArr[i].ToString().ToLowerInvariant();
|
var spellName = orderArr[i].ToString().ToLowerInvariant();
|
||||||
|
|
||||||
switch (spellName) {
|
switch (spellName)
|
||||||
|
{
|
||||||
case "w":
|
case "w":
|
||||||
orderY += orderVerticalSpacing;
|
orderY += orderVerticalSpacing;
|
||||||
break;
|
break;
|
||||||
@ -206,7 +233,8 @@ Assists: {general["assists"]} Ban: {general["banRate"]}%
|
|||||||
g.DrawString($"Best against", smallFont, Brushes.WhiteSmoke, margin, img.Height - imageSize + margin);
|
g.DrawString($"Best against", smallFont, Brushes.WhiteSmoke, margin, img.Height - imageSize + margin);
|
||||||
var smallImgSize = 50;
|
var smallImgSize = 50;
|
||||||
|
|
||||||
for (var i = 0; i < counters.Length; i++) {
|
for (var i = 0; i < counters.Length; i++)
|
||||||
|
{
|
||||||
g.DrawImage(GetImage(counters[i]),
|
g.DrawImage(GetImage(counters[i]),
|
||||||
new Rectangle(i * (smallImgSize + margin) + margin, img.Height - smallImgSize - margin,
|
new Rectangle(i * (smallImgSize + margin) + margin, img.Height - smallImgSize - margin,
|
||||||
smallImgSize,
|
smallImgSize,
|
||||||
@ -215,7 +243,8 @@ Assists: {general["assists"]} Ban: {general["banRate"]}%
|
|||||||
//draw countered by
|
//draw countered by
|
||||||
g.DrawString($"Worst against", smallFont, Brushes.WhiteSmoke, img.Width - 3 * (smallImgSize + margin), img.Height - imageSize + margin);
|
g.DrawString($"Worst against", smallFont, Brushes.WhiteSmoke, img.Width - 3 * (smallImgSize + margin), img.Height - imageSize + margin);
|
||||||
|
|
||||||
for (var i = 0; i < countered.Length; i++) {
|
for (var i = 0; i < countered.Length; i++)
|
||||||
|
{
|
||||||
var j = countered.Length - i;
|
var j = countered.Length - i;
|
||||||
g.DrawImage(GetImage(countered[i]),
|
g.DrawImage(GetImage(countered[i]),
|
||||||
new Rectangle(img.Width - (j * (smallImgSize + margin) + margin), img.Height - smallImgSize - margin,
|
new Rectangle(img.Width - (j * (smallImgSize + margin) + margin), img.Height - smallImgSize - margin,
|
||||||
@ -225,7 +254,8 @@ Assists: {general["assists"]} Ban: {general["banRate"]}%
|
|||||||
//draw item build
|
//draw item build
|
||||||
g.DrawString("Popular build", normalFont, Brushes.WhiteSmoke, img.Width - (3 * (smallImgSize + margin) + margin), 77);
|
g.DrawString("Popular build", normalFont, Brushes.WhiteSmoke, img.Width - (3 * (smallImgSize + margin) + margin), 77);
|
||||||
|
|
||||||
for (var i = 0; i < 6; i++) {
|
for (var i = 0; i < 6; i++)
|
||||||
|
{
|
||||||
var inverseI = 5 - i;
|
var inverseI = 5 - i;
|
||||||
var j = inverseI % 3 + 1;
|
var j = inverseI % 3 + 1;
|
||||||
var k = inverseI / 3;
|
var k = inverseI / 3;
|
||||||
@ -238,18 +268,23 @@ Assists: {general["assists"]} Ban: {general["banRate"]}%
|
|||||||
var cachedChamp = new CachedChampion { AddedAt = DateTime.Now, ImageStream = img.ToStream(System.Drawing.Imaging.ImageFormat.Png), Name = name.ToLower() + "_" + resolvedRole };
|
var cachedChamp = new CachedChampion { AddedAt = DateTime.Now, ImageStream = img.ToStream(System.Drawing.Imaging.ImageFormat.Png), Name = name.ToLower() + "_" + resolvedRole };
|
||||||
CachedChampionImages.Add(cachedChamp.Name, cachedChamp);
|
CachedChampionImages.Add(cachedChamp.Name, cachedChamp);
|
||||||
await e.Channel.SendFile(data["title"] + "_stats.png", cachedChamp.ImageStream);
|
await e.Channel.SendFile(data["title"] + "_stats.png", cachedChamp.ImageStream);
|
||||||
} catch {
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
Console.WriteLine(ex);
|
||||||
await e.Channel.SendMessage("💢 Failed retreiving data for that champion.");
|
await e.Channel.SendMessage("💢 Failed retreiving data for that champion.");
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
cgb.CreateCommand(Module.Prefix + "lolban")
|
cgb.CreateCommand(Module.Prefix + "lolban")
|
||||||
.Description("Shows top 6 banned champions ordered by ban rate. Ban these champions and you will be Plat 5 in no time.")
|
.Description("Shows top 6 banned champions ordered by ban rate. Ban these champions and you will be Plat 5 in no time.")
|
||||||
.Do(async e => {
|
.Do(async e =>
|
||||||
|
{
|
||||||
|
|
||||||
var showCount = 6;
|
var showCount = 6;
|
||||||
//http://api.champion.gg/stats/champs/mostBanned?api_key=YOUR_API_TOKEN&page=1&limit=2
|
//http://api.champion.gg/stats/champs/mostBanned?api_key=YOUR_API_TOKEN&page=1&limit=2
|
||||||
try {
|
try
|
||||||
|
{
|
||||||
var data = JObject.Parse(
|
var data = JObject.Parse(
|
||||||
await Classes
|
await Classes
|
||||||
.SearchHelper
|
.SearchHelper
|
||||||
@ -260,7 +295,8 @@ Assists: {general["assists"]} Ban: {general["banRate"]}%
|
|||||||
var sb = new StringBuilder();
|
var sb = new StringBuilder();
|
||||||
sb.AppendLine($"**Showing {showCount} top banned champions.**");
|
sb.AppendLine($"**Showing {showCount} top banned champions.**");
|
||||||
sb.AppendLine($"`{trashTalk[new Random().Next(0, trashTalk.Length)]}`");
|
sb.AppendLine($"`{trashTalk[new Random().Next(0, trashTalk.Length)]}`");
|
||||||
for (var i = 0; i < data.Count; i++) {
|
for (var i = 0; i < data.Count; i++)
|
||||||
|
{
|
||||||
if (i % 2 == 0 && i != 0)
|
if (i % 2 == 0 && i != 0)
|
||||||
sb.AppendLine();
|
sb.AppendLine();
|
||||||
sb.Append($"`{i + 1}.` **{data[i]["name"]}** ");
|
sb.Append($"`{i + 1}.` **{data[i]["name"]}** ");
|
||||||
@ -268,34 +304,44 @@ Assists: {general["assists"]} Ban: {general["banRate"]}%
|
|||||||
}
|
}
|
||||||
|
|
||||||
await e.Channel.SendMessage(sb.ToString());
|
await e.Channel.SendMessage(sb.ToString());
|
||||||
} catch (Exception ex) {
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
await e.Channel.SendMessage($":anger: Fail: Champion.gg didsabled ban data until next patch. Sorry for the inconvenience.");
|
await e.Channel.SendMessage($":anger: Fail: Champion.gg didsabled ban data until next patch. Sorry for the inconvenience.");
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
private enum GetImageType {
|
private enum GetImageType
|
||||||
|
{
|
||||||
Champion,
|
Champion,
|
||||||
Item
|
Item
|
||||||
}
|
}
|
||||||
private static Image GetImage(string id, GetImageType imageType = GetImageType.Champion) {
|
private static Image GetImage(string id, GetImageType imageType = GetImageType.Champion)
|
||||||
try {
|
{
|
||||||
switch (imageType) {
|
try
|
||||||
|
{
|
||||||
|
switch (imageType)
|
||||||
|
{
|
||||||
case GetImageType.Champion:
|
case GetImageType.Champion:
|
||||||
return Image.FromFile($"data/lol/champions/{id}.png");
|
return Image.FromFile($"data/lol/champions/{id}.png");
|
||||||
case GetImageType.Item:
|
case GetImageType.Item:
|
||||||
default:
|
default:
|
||||||
return Image.FromFile($"data/lol/items/{id}.png");
|
return Image.FromFile($"data/lol/items/{id}.png");
|
||||||
}
|
}
|
||||||
} catch (Exception) {
|
}
|
||||||
|
catch (Exception)
|
||||||
|
{
|
||||||
return Image.FromFile("data/lol/_ERROR.png");
|
return Image.FromFile("data/lol/_ERROR.png");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static string ResolvePos(string pos) {
|
private static string ResolvePos(string pos)
|
||||||
|
{
|
||||||
if (string.IsNullOrWhiteSpace(pos))
|
if (string.IsNullOrWhiteSpace(pos))
|
||||||
return null;
|
return null;
|
||||||
switch (pos.ToLowerInvariant()) {
|
switch (pos.ToLowerInvariant())
|
||||||
|
{
|
||||||
case "m":
|
case "m":
|
||||||
case "mid":
|
case "mid":
|
||||||
case "midorfeed":
|
case "midorfeed":
|
||||||
|
@ -1,18 +1,17 @@
|
|||||||
using Discord;
|
using Discord;
|
||||||
using Discord.Commands;
|
using Discord.Commands;
|
||||||
using Discord.Modules;
|
using Discord.Modules;
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
using System.Diagnostics;
|
|
||||||
using System.Drawing;
|
|
||||||
using System.IO;
|
|
||||||
using System.Drawing.Imaging;
|
|
||||||
using NadekoBot.Classes;
|
using NadekoBot.Classes;
|
||||||
|
using NadekoBot.Commands;
|
||||||
using NadekoBot.Extensions;
|
using NadekoBot.Extensions;
|
||||||
using NadekoBot.Properties;
|
using NadekoBot.Properties;
|
||||||
using NadekoBot.Commands;
|
using System;
|
||||||
|
using System.Diagnostics;
|
||||||
|
using System.Drawing;
|
||||||
|
using System.Drawing.Imaging;
|
||||||
|
using System.IO;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
namespace NadekoBot.Modules
|
namespace NadekoBot.Modules
|
||||||
{
|
{
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
######You can donate on paypal: `nadekodiscordbot@gmail.com` or Bitcoin `17MZz1JAqME39akMLrVT4XBPffQJ2n1EPa`
|
######You can donate on paypal: `nadekodiscordbot@gmail.com` or Bitcoin `17MZz1JAqME39akMLrVT4XBPffQJ2n1EPa`
|
||||||
|
|
||||||
#NadekoBot List Of Commands
|
#NadekoBot List Of Commands
|
||||||
Version: `NadekoBot v0.9.5925.41065`
|
Version: `NadekoBot v0.9.5930.23184`
|
||||||
### Administration
|
### Administration
|
||||||
Command and aliases | Description | Usage
|
Command and aliases | Description | Usage
|
||||||
----------------|--------------|-------
|
----------------|--------------|-------
|
||||||
@ -13,9 +13,9 @@ Command and aliases | Description | Usage
|
|||||||
`.byepm` | Toggles whether the good bye messages will be sent in a PM or in the text channel.
|
`.byepm` | Toggles whether the good bye messages will be sent in a PM or in the text channel.
|
||||||
`.greetpm` | Toggles whether the greet messages will be sent in a PM or in the text channel.
|
`.greetpm` | Toggles whether the greet messages will be sent in a PM or in the text channel.
|
||||||
`.spmom` | Toggles whether mentions of other offline users on your server will send a pm to them.
|
`.spmom` | Toggles whether mentions of other offline users on your server will send a pm to them.
|
||||||
`.logserver` | Toggles logging in this channel. Logs every message sent/deleted/edited on the server. BOT OWNER ONLY. SERVER OWNER ONLY.
|
`.logserver` | Toggles logging in this channel. Logs every message sent/deleted/edited on the server. **Owner Only!**
|
||||||
`.userpresence` | Starts logging to this channel when someone from the server goes online/offline/idle. BOT OWNER ONLY. SERVER OWNER ONLY.
|
`.userpresence` | Starts logging to this channel when someone from the server goes online/offline/idle. **Owner Only!**
|
||||||
`.voicepresence` | Toggles logging to this channel whenever someone joins or leaves a voice channel you are in right now. BOT OWNER ONLY. SERVER OWNER ONLY.
|
`.voicepresence` | Toggles logging to this channel whenever someone joins or leaves a voice channel you are in right now. **Owner Only!**
|
||||||
`.repeat` | Repeat a message every X minutes. If no parameters are specified, repeat is disabled. Requires manage messages.
|
`.repeat` | Repeat a message every X minutes. If no parameters are specified, repeat is disabled. Requires manage messages.
|
||||||
`.rotateplaying`, `.ropl` | Toggles rotation of playing status of the dynamic strings you specified earlier.
|
`.rotateplaying`, `.ropl` | Toggles rotation of playing status of the dynamic strings you specified earlier.
|
||||||
`.addplaying`, `.adpl` | Adds a specified string to the list of playing strings to rotate. Supported placeholders: %servers%, %users%, %playing%, %queued%, %trivia%
|
`.addplaying`, `.adpl` | Adds a specified string to the list of playing strings to rotate. Supported placeholders: %servers%, %users%, %playing%, %queued%, %trivia%
|
||||||
@ -77,7 +77,7 @@ Command and aliases | Description | Usage
|
|||||||
Command and aliases | Description | Usage
|
Command and aliases | Description | Usage
|
||||||
----------------|--------------|-------
|
----------------|--------------|-------
|
||||||
`-h`, `-help`, `@BotName help`, `@BotName h`, `~h` | Either shows a help for a single command, or PMs you help link if no arguments are specified. | '-h !m q' or just '-h'
|
`-h`, `-help`, `@BotName help`, `@BotName h`, `~h` | Either shows a help for a single command, or PMs you help link if no arguments are specified. | '-h !m q' or just '-h'
|
||||||
`-hgit` | OWNER ONLY commandlist.md file generation.
|
`-hgit` | Generates the commandlist.md file. **Owner Only!**
|
||||||
`-readme`, `-guide` | Sends a readme and a guide links to the channel.
|
`-readme`, `-guide` | Sends a readme and a guide links to the channel.
|
||||||
`-donate`, `~donate` | Instructions for helping the project!
|
`-donate`, `~donate` | Instructions for helping the project!
|
||||||
`-modules`, `.modules` | List all bot modules.
|
`-modules`, `.modules` | List all bot modules.
|
||||||
@ -114,16 +114,19 @@ Command and aliases | Description | Usage
|
|||||||
`;arm`, `;allrolemodules` | Sets permissions for all modules at the role level. | ;arm [enable/disable] [role_name]
|
`;arm`, `;allrolemodules` | Sets permissions for all modules at the role level. | ;arm [enable/disable] [role_name]
|
||||||
`;arc`, `;allrolecommands` | Sets permissions for all commands from a certain module at the role level. | ;arc [module_name] [enable/disable] [role_name]
|
`;arc`, `;allrolecommands` | Sets permissions for all commands from a certain module at the role level. | ;arc [module_name] [enable/disable] [role_name]
|
||||||
`;ubl` | Blacklists a mentioned user. | ;ubl [user_mention]
|
`;ubl` | Blacklists a mentioned user. | ;ubl [user_mention]
|
||||||
`;uubl`, `;unblacklist` | Unblacklists a mentioned user. | ;uubl [user_mention]
|
`;uubl` | Unblacklists a mentioned user. | ;uubl [user_mention]
|
||||||
`;cbl` | Blacklists a mentioned channel (#general for example). | ;ubl [channel_mention]
|
`;cbl` | Blacklists a mentioned channel (#general for example). | ;ubl [channel_mention]
|
||||||
|
`;cubl` | Unblacklists a mentioned channel (#general for example). | ;cubl [channel_mention]
|
||||||
`;sbl` | Blacklists a server by a name or id (#general for example). **BOT OWNER ONLY** | ;usl [servername/serverid]
|
`;sbl` | Blacklists a server by a name or id (#general for example). **BOT OWNER ONLY** | ;usl [servername/serverid]
|
||||||
|
|
||||||
### Conversations
|
### Conversations
|
||||||
Command and aliases | Description | Usage
|
Command and aliases | Description | Usage
|
||||||
----------------|--------------|-------
|
----------------|--------------|-------
|
||||||
`e` | You did it.
|
`e` | You did it.
|
||||||
|
`comeatmebro` | Come at me bro (ง’̀-‘́)ง | comeatmebro {target}
|
||||||
`\o\` | Nadeko replies with /o/
|
`\o\` | Nadeko replies with /o/
|
||||||
`/o/` | Nadeko replies with \o\
|
`/o/` | Nadeko replies with \o\
|
||||||
|
`moveto` | Suggests moving the conversation. | moveto #spam
|
||||||
`..` | Adds a new quote with the specified name (single word) and message (no limit). | .. abc My message
|
`..` | Adds a new quote with the specified name (single word) and message (no limit). | .. abc My message
|
||||||
`...` | Shows a random quote with a specified name. | .. abc
|
`...` | Shows a random quote with a specified name. | .. abc
|
||||||
`@BotName copyme`, `@BotName cm` | Nadeko starts copying everything you say. Disable with cs
|
`@BotName copyme`, `@BotName cm` | Nadeko starts copying everything you say. Disable with cs
|
||||||
@ -155,7 +158,7 @@ Command and aliases | Description | Usage
|
|||||||
`@BotName dump` | Dumps all of the invites it can to dump.txt.** Owner Only.**
|
`@BotName dump` | Dumps all of the invites it can to dump.txt.** Owner Only.**
|
||||||
`@BotName ab` | Try to get 'abalabahaha'
|
`@BotName ab` | Try to get 'abalabahaha'
|
||||||
`@BotName av`, `@BotName avatar` | Shows a mentioned person's avatar. | ~av @X
|
`@BotName av`, `@BotName avatar` | Shows a mentioned person's avatar. | ~av @X
|
||||||
`@BotName leet` | Convert your text to leetspeak. Level is a number 1-6. | @BotName leet [level] [Your text here]
|
`@BotName leet` |
|
||||||
|
|
||||||
### Gambling
|
### Gambling
|
||||||
Command and aliases | Description | Usage
|
Command and aliases | Description | Usage
|
||||||
@ -167,6 +170,7 @@ Command and aliases | Description | Usage
|
|||||||
`$nroll` | Rolls in a given range. | `$nroll 5` (rolls 0-5) or `$nroll 5-15`
|
`$nroll` | Rolls in a given range. | `$nroll 5` (rolls 0-5) or `$nroll 5-15`
|
||||||
`$raffle` | Prints a name and ID of a random user from the online list from the (optional) role.
|
`$raffle` | Prints a name and ID of a random user from the online list from the (optional) role.
|
||||||
`$$$` | Check how many NadekoFlowers you have.
|
`$$$` | Check how many NadekoFlowers you have.
|
||||||
|
`$give` | Give someone a certain amount of flowers
|
||||||
|
|
||||||
### Games
|
### Games
|
||||||
Command and aliases | Description | Usage
|
Command and aliases | Description | Usage
|
||||||
@ -204,12 +208,12 @@ Command and aliases | Description | Usage
|
|||||||
`!m sh` | Shuffles the current playlist.
|
`!m sh` | Shuffles the current playlist.
|
||||||
`!m setgame` | Sets the game of the bot to the number of songs playing. **Owner only**
|
`!m setgame` | Sets the game of the bot to the number of songs playing. **Owner only**
|
||||||
`!m pl` | Queues up to 25 songs from a youtube playlist specified by a link, or keywords.
|
`!m pl` | Queues up to 25 songs from a youtube playlist specified by a link, or keywords.
|
||||||
`!m lopl` | Queues up to 50 songs from a directory.
|
`!m lopl` | Queues up to 50 songs from a directory. **Owner Only!**
|
||||||
`!m radio`, `!m ra` | Queues a direct radio stream from a link.
|
`!m radio`, `!m ra` | Queues a direct radio stream from a link.
|
||||||
`!m lo` | Queues a local file by specifying a full path. BOT OWNER ONLY.
|
`!m lo` | Queues a local file by specifying a full path. **Owner Only!**
|
||||||
`!m mv` | Moves the bot to your voice channel. (works only if music is already playing)
|
`!m mv` | Moves the bot to your voice channel. (works only if music is already playing)
|
||||||
`!m rm` | Remove a song by its # in the queue, or 'all' to remove whole queue.
|
`!m rm` | Remove a song by its # in the queue, or 'all' to remove whole queue.
|
||||||
`!m cleanup` | Cleans up hanging voice connections. BOT OWNER ONLY
|
`!m cleanup` | Cleans up hanging voice connections. **Owner Only!**
|
||||||
|
|
||||||
### Searches
|
### Searches
|
||||||
Command and aliases | Description | Usage
|
Command and aliases | Description | Usage
|
||||||
@ -223,6 +227,7 @@ Command and aliases | Description | Usage
|
|||||||
`~we` | Shows weather data for a specified city and a country BOTH ARE REQUIRED. Weather api is very random if you make a mistake.
|
`~we` | Shows weather data for a specified city and a country BOTH ARE REQUIRED. Weather api is very random if you make a mistake.
|
||||||
`~yt` | Searches youtubes and shows the first result
|
`~yt` | Searches youtubes and shows the first result
|
||||||
`~ani`, `~anime`, `~aq` | Queries anilist for an anime and shows the first result.
|
`~ani`, `~anime`, `~aq` | Queries anilist for an anime and shows the first result.
|
||||||
|
`~imdb` | Queries imdb for movies or series, show first result.
|
||||||
`~mang`, `~manga`, `~mq` | Queries anilist for a manga and shows the first result.
|
`~mang`, `~manga`, `~mq` | Queries anilist for a manga and shows the first result.
|
||||||
`~randomcat` | Shows a random cat image.
|
`~randomcat` | Shows a random cat image.
|
||||||
`~i` | Pulls the first image found using a search parameter. Use ~ir for different results. | ~i cute kitten
|
`~i` | Pulls the first image found using a search parameter. Use ~ir for different results. | ~i cute kitten
|
||||||
@ -234,6 +239,12 @@ Command and aliases | Description | Usage
|
|||||||
`~#` | Searches Tagdef.com for a hashtag. | ~# ff
|
`~#` | Searches Tagdef.com for a hashtag. | ~# ff
|
||||||
`~quote` | Shows a random quote.
|
`~quote` | Shows a random quote.
|
||||||
|
|
||||||
|
### Translator
|
||||||
|
Command and aliases | Description | Usage
|
||||||
|
----------------|--------------|-------
|
||||||
|
`~trans` | Translates from>to text. From the given language to the destiation language.
|
||||||
|
`~translangs` | List the valid languages for translation.
|
||||||
|
|
||||||
### NSFW
|
### NSFW
|
||||||
Command and aliases | Description | Usage
|
Command and aliases | Description | Usage
|
||||||
----------------|--------------|-------
|
----------------|--------------|-------
|
||||||
|
Loading…
Reference in New Issue
Block a user