lq, q nicer txt, fixed .prune > 100

This commit is contained in:
Master Kwoth 2016-01-30 12:08:30 +01:00
parent 171d3cd4ab
commit efc2810f22
7 changed files with 73 additions and 47 deletions

View File

@ -33,6 +33,17 @@ namespace NadekoBot.Extensions {
}
return "`"+string.Join(" ", letters)+"`";
}
public static string TrimTo(this string str, int num) {
if (num < 0)
throw new ArgumentException("TrimTo argument cannot be less than 0");
if (num == 0)
return String.Empty;
if (num <= 3)
return String.Join("", str.Select(c => '.'));
if (str.Length < num)
return str;
return string.Join("", str.Take(num - 3)) + "...";
}
/// <summary>
/// Sends a message to the channel from which this command is called.

View File

@ -65,7 +65,7 @@ namespace NadekoBot.Classes.Music {
if (video == null) // do something with this error
throw new Exception("Could not load any video elements based on the query.");
Title = video.Title;
Title = video.Title.Substring(0,video.Title.Length-10); // removing trailing "- You Tube"
} catch (Exception ex) {
privateState = StreamState.Completed;
Console.WriteLine($"Failed resolving the link.{ex.Message}");
@ -142,7 +142,7 @@ namespace NadekoBot.Classes.Music {
public string Stats() =>
"--------------------------------\n" +
$"Music stats for {string.Join("", parent.Title.Take(parent.Title.Length > 20 ? 20 : parent.Title.Length))}\n" +
$"Music stats for {string.Join("", parent.Title.TrimTo(50))}\n" +
$"Server: {parent.Server.Name}\n" +
$"Length:{buffer.Length * 1.0f / 1.MB()}MB Status: {State}\n" +
"--------------------------------\n";

View File

@ -5,7 +5,6 @@ using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Timers;
using NadekoBot.Extensions;
using System.Threading.Tasks;

View File

@ -3,35 +3,47 @@ using System.Threading.Tasks;
using Discord.Commands;
using Discord.Legacy;
using NadekoBot.Extensions;
using System.Drawing;
namespace NadekoBot
{
class FlipCoinCommand : DiscordCommand
{
namespace NadekoBot {
class FlipCoinCommand : DiscordCommand {
private Random _r;
public FlipCoinCommand() : base()
{
public FlipCoinCommand() : base() {
_r = new Random();
}
public override Func<CommandEventArgs, Task> DoFunc() => async e =>
{
int num = _r.Next(0, 2);
if (num == 1)
{
public override Func<CommandEventArgs, Task> DoFunc() => async e => {
if (e.GetArg("count") == "") {
if (_r.Next(0, 2) == 1)
await e.Channel.SendFile("heads.png", Properties.Resources.heads.ToStream(System.Drawing.Imaging.ImageFormat.Png));
}
else
{
await e.Channel.SendFile("tails.png", Properties.Resources.tails.ToStream(System.Drawing.Imaging.ImageFormat.Png));
} else {
int result;
if (int.TryParse(e.GetArg("count"), out result)) {
if (result > 10)
result = 10;
Image[] imgs = new Image[result];
for (int i = 0; i < result; i++) {
imgs[i] = _r.Next(0, 2) == 0 ?
Properties.Resources.tails :
Properties.Resources.heads;
}
await e.Channel.SendFile($"{result} coins.png", imgs.Merge().ToStream(System.Drawing.Imaging.ImageFormat.Png));
return;
}
await e.Send("Invalid number");
}
};
public override void Init(CommandGroupBuilder cgb)
{
public override void Init(CommandGroupBuilder cgb) {
cgb.CreateCommand("$flip")
.Description("Flips a coin, heads or tails, and shows an image of it.")
.Description("Flips coin(s) - heads or tails, and shows an image.\n**Usage**: `$flip` or `$flip 3`")
.Parameter("count", ParameterType.Optional)
.Do(DoFunc());
}
}

View File

@ -300,7 +300,14 @@ namespace NadekoBot.Modules {
return;
}
try {
(await e.Channel.DownloadMessages(num)).ForEach(async m => await m.Delete());
var msgs = await e.Channel.DownloadMessages(100);
var lastmessage = e.Channel.Messages.LastOrDefault();
while (num > 0 && lastmessage!=null) {
msgs.ForEach(async m => await m.Delete());
num -= 100;
lastmessage = msgs.LastOrDefault();
msgs = await e.Channel.DownloadMessages(100, lastmessage?.Id);
}
} catch (Exception) { await e.Send("Failed pruning. Make sure the bot has correct permissions."); }
});
@ -322,9 +329,7 @@ namespace NadekoBot.Modules {
.Description("Clears some of nadeko's messages from the current channel.")
.Do(async e => {
try {
if (e.Channel.Messages.Count() < 50) {
await e.Channel.DownloadMessages(100);
}
e.Channel.Messages.Where(msg => msg.User.Id == client.CurrentUser.Id).ForEach(async m => await m.Delete());

View File

@ -96,21 +96,22 @@ namespace NadekoBot.Modules {
if (sr == null)
throw new NullReferenceException("StreamRequest is null.");
Message msg = null;
Message qmsg = null;
sr.OnQueued += async () => {
msg = await e.Send($":musical_note:**Queued** {sr.Title}");
qmsg = await e.Send($":musical_note:**Queued** {sr.Title.TrimTo(55)}");
};
sr.OnCompleted += async () => {
await e.Send($":musical_note:**Finished playing** {sr.Title}");
await e.Send($":musical_note:**Finished playing** {sr.Title.TrimTo(55)}");
};
sr.OnStarted += async () => {
if (msg == null)
await e.Send($":musical_note:**Starting playback of** {sr.Title}");
await e.Send($":musical_note:**Playing ** {sr.Title.TrimTo(55)}");
else
await msg.Edit($":musical_note:**Starting playback of** {sr.Title}");
await msg.Edit($":musical_note:**Playing ** {sr.Title.TrimTo(55)}");
qmsg?.Delete();
};
sr.OnBuffering += async () => {
if (msg != null)
msg = await e.Send($":musical_note:**Buffering the song**...{sr.Title}");
msg = await e.Send($":musical_note:**Buffering...** {sr.Title.TrimTo(55)}");
};
} catch (Exception ex) {
Console.WriteLine();
@ -127,7 +128,8 @@ namespace NadekoBot.Modules {
var player = musicPlayers[e.Server];
await e.Send(":musical_note: " + player.SongQueue.Count + " videos currently queued.");
await e.Send(string.Join("\n", player.SongQueue.Select(v => v.Title).Take(10)));
int number = 1;
await e.Send(string.Join("\n", player.SongQueue.Select(v => $"**#{number++}** {v.Title.TrimTo(60)}").Take(10)));
});
cgb.CreateCommand("np")

View File

@ -9,8 +9,6 @@ using Discord.Modules;
using Discord.Audio;
using NadekoBot.Extensions;
using System.Timers;
using System.Linq;
using System.Diagnostics;
namespace NadekoBot {
class NadekoBot {
@ -49,11 +47,19 @@ namespace NadekoBot {
ForwardMessages = true;
Console.WriteLine("Forwarding messages.");
}
if (c.ParseKey == null || c.ParseID == null || c.ParseID == "" || c.ParseKey == "") {
Console.WriteLine("Parse key and/or ID not found. Those are mandatory.");
Console.ReadKey();
return;
}
//init parse
ParseClient.Initialize(c.ParseID, c.ParseKey);
OwnerID = c.OwnerID;
password = c.Password;
} catch (Exception ex) {
Console.WriteLine("Failed to load stuff from credentials.json, RTFM");
Console.WriteLine($"Failed to load stuff from credentials.json, RTFM\n{ex.Message}");
Console.ReadKey();
return;
}
@ -61,22 +67,13 @@ namespace NadekoBot {
//create new discord client
client = new DiscordClient();
//create a command service
var commandService = new CommandService(new CommandServiceConfig {
CommandChar = null,
HelpMode = HelpMode.Disable
});
//init parse
if (c.ParseKey != null && c.ParseID != null && c.ParseID != "" && c.ParseKey != "") {
ParseClient.Initialize(c.ParseID, c.ParseKey);
//monitor commands for logging
} else {
Console.WriteLine("Parse key and/or ID not found. Logging disabled.");
}
//reply to personal messages and forward if enabled.
client.MessageReceived += Client_MessageReceived;