Decently sized C#6 refactor

Also removed unused using statements
This commit is contained in:
Kwoth 2015-12-12 23:39:58 +01:00
parent 1847ddbbe2
commit d9657436a4
10 changed files with 161 additions and 221 deletions

View File

@ -58,14 +58,10 @@ public class Cards
this.suit = s; this.suit = s;
this.number = card_num; this.number = card_num;
} }
public string GetName() {
return cardNames[number];
}
public override string ToString() public string GetName() => cardNames[number];
{
return cardNames[number] + " Of " + suit; public override string ToString() => cardNames[number] + " Of " + suit;
}
public int CompareTo(object obj) public int CompareTo(object obj)
{ {
@ -95,11 +91,7 @@ public class Cards
/// Restart the game of blackjack. It will only refill the pool for now. Probably wont be used, unless you want to have only 1 bjg running at one time, /// Restart the game of blackjack. It will only refill the pool for now. Probably wont be used, unless you want to have only 1 bjg running at one time,
/// then you will restart the same game every time. /// then you will restart the same game every time.
/// </summary> /// </summary>
public void Restart() public void Restart() => RefillPool();
{
// you dont have to uncover what is actually happening anda da hood
RefillPool();
}
/// <summary> /// <summary>
/// Removes all cards from the pool and refills the pool with all of the possible cards. NOTE: I think this is too expensive. /// Removes all cards from the pool and refills the pool with all of the possible cards. NOTE: I think this is too expensive.

View File

@ -1,7 +1,6 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
using System.Security.Cryptography; using System.Security.Cryptography;
using Discord.Commands; using Discord.Commands;
@ -34,9 +33,7 @@ namespace NadekoBot
/// <param name="message">Message to be sent</param> /// <param name="message">Message to be sent</param>
/// <returns></returns> /// <returns></returns>
public static async Task<Message> Send(this CommandEventArgs e, string message) public static async Task<Message> Send(this CommandEventArgs e, string message)
{ => await NadekoBot.client.SendMessage(e.Channel, message);
return await NadekoBot.client.SendMessage(e.Channel, message);
}
/// <summary> /// <summary>
/// Sends a message to the channel from which MessageEventArg came. /// Sends a message to the channel from which MessageEventArg came.
/// </summary> /// </summary>

View File

@ -6,8 +6,6 @@ using System.Collections.Generic;
using System.Diagnostics; using System.Diagnostics;
using System.IO; using System.IO;
using System.Linq; using System.Linq;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
using System.Timers; using System.Timers;
@ -31,51 +29,40 @@ namespace NadekoBot
return tg; return tg;
} }
public TriviaQuestion GetCurrentQuestion(long serverId) { public TriviaQuestion GetCurrentQuestion(long serverId) => runningTrivias[serverId].currentQuestion;
return runningTrivias[serverId].currentQuestion;
}
public override Func<CommandEventArgs, Task> DoFunc() public override Func<CommandEventArgs, Task> DoFunc() => async e =>
{ {
return async e => TriviaGame tg;
if ((tg = StartNewGame(e)) != null)
{ {
TriviaGame tg; await e.Send("**Trivia game started!**\nFirst player to get to 10 points wins! You have 30 seconds per question.\nUse command [tq] if game was started by accident.\nTyping [idfk] 15 seconds after the question has started will give you a hint.");
if ((tg = StartNewGame(e))!=null) }
{ else
await e.Send( "**Trivia game started!**\nFirst player to get to 10 points wins! You have 30 seconds per question.\nUse command [tq] if game was started by accident.\nTyping [idfk] 15 seconds after the question has started will give you a hint."); await e.Send("Trivia game is already running on this server. The question is:\n**" + GetCurrentQuestion(e.Server.Id).Question + "**");
} };
else
await e.Send( "Trivia game is already running on this server. The question is:\n**"+GetCurrentQuestion(e.Server.Id).Question+"**");
};
}
private Func<CommandEventArgs, Task> LbFunc() private Func<CommandEventArgs, Task> LbFunc() => async e =>
{ {
return async e => if (runningTrivias.ContainsKey(e.Server.Id))
{ {
if (runningTrivias.ContainsKey(e.Server.Id)) var lb = runningTrivias[e.User.Server.Id].GetLeaderboard();
{ await e.Send(lb);
var lb = runningTrivias[e.User.Server.Id].GetLeaderboard(); }
await e.Send( lb); else
} await e.Send("Trivia game is not running on this server.");
else };
await e.Send( "Trivia game is not running on this server.");
};
}
private Func<CommandEventArgs, Task> RepeatFunc() private Func<CommandEventArgs, Task> RepeatFunc() => async e =>
{ {
return async e => if (runningTrivias.ContainsKey(e.Server.Id))
{ {
if (runningTrivias.ContainsKey(e.Server.Id)) var lb = runningTrivias[e.User.Server.Id].GetLeaderboard();
{ await e.Send(lb);
var lb = runningTrivias[e.User.Server.Id].GetLeaderboard(); }
await e.Send( lb); else
} await e.Send("Trivia game is not running on this server.");
else };
await e.Send( "Trivia game is not running on this server.");
};
}
public override void Init(CommandGroupBuilder cgb) public override void Init(CommandGroupBuilder cgb)
{ {
@ -97,18 +84,15 @@ namespace NadekoBot
.Do(QuitFunc()); .Do(QuitFunc());
} }
private Func<CommandEventArgs, Task> QuitFunc() private Func<CommandEventArgs, Task> QuitFunc() => async e =>
{ {
return async e => if (runningTrivias.ContainsKey(e.Server.Id) && runningTrivias[e.Server.Id].ChannelId == e.Channel.Id)
{ {
if (runningTrivias.ContainsKey(e.Server.Id) && runningTrivias[e.Server.Id].ChannelId ==e.Channel.Id) await e.Send("Trivia will stop after this question. Run [**@NadekoBot clr**] to remove this bot's messages from the channel.");
{ runningTrivias[e.Server.Id].StopGame();
await e.Send( "Trivia will stop after this question. Run [**@NadekoBot clr**] to remove this bot's messages from the channel."); }
runningTrivias[e.Server.Id].StopGame(); else await e.Send("No trivias are running on this channel.");
} };
else await e.Send( "No trivias are running on this channel.");
};
}
internal static void FinishGame(TriviaGame triviaGame) internal static void FinishGame(TriviaGame triviaGame)
{ {
@ -122,13 +106,7 @@ namespace NadekoBot
private long _serverId; private long _serverId;
private long _channellId; private long _channellId;
public long ChannelId public long ChannelId => _channellId;
{
get
{
return _channellId;
}
}
private Dictionary<long, int> users; private Dictionary<long, int> users;
@ -271,19 +249,21 @@ namespace NadekoBot
} }
} }
public class TriviaQuestion { public class TriviaQuestion
{
public string Category; public string Category;
public string Question; public string Question;
public string Answer; public string Answer;
public TriviaQuestion(string q, string a) { public TriviaQuestion(string q, string a)
{
this.Question = q; this.Question = q;
this.Answer = a; this.Answer = a;
} }
public override string ToString() public override string ToString() =>
{ this.Category == null ?
return this.Category == null ? "--------**Q**--------\nQuestion: **" + this.Question + "?**" : "--------Q--------\nCategory: " + this.Category + "\nQuestion: **"+ this.Question+ "?**"; "--------**Q**--------\nQuestion: **" + this.Question + "?**" :
} "--------Q--------\nCategory: " + this.Category + "\nQuestion: **" + this.Question + "?**";
} }
public class TriviaQuestionsPool { public class TriviaQuestionsPool {
@ -303,7 +283,8 @@ namespace NadekoBot
private Random _r; private Random _r;
public TriviaQuestionsPool() { public TriviaQuestionsPool()
{
_r = new Random(); _r = new Random();
pool = new List<TriviaQuestion>(); pool = new List<TriviaQuestion>();
JArray arr = JArray.Parse(File.ReadAllText("questions.txt")); JArray arr = JArray.Parse(File.ReadAllText("questions.txt"));
@ -311,9 +292,10 @@ namespace NadekoBot
foreach (var item in arr) foreach (var item in arr)
{ {
TriviaQuestion tq; TriviaQuestion tq;
tq = new TriviaQuestion((string)item["Question"],(string)item["Answer"]); tq = new TriviaQuestion((string)item["Question"], (string)item["Answer"]);
if (item?["Category"] != null) { if (item?["Category"] != null)
{
tq.Category = item["Category"].ToString(); tq.Category = item["Category"].ToString();
} }

View File

@ -21,16 +21,14 @@
public string description; public string description;
public string image_url_lge; public string image_url_lge;
public override string ToString() public override string ToString() =>
{ "`Title:` **" + title_english +
return "`Title:` **" + title_english + "**\n`Status:` " + airing_status +
"**\n`Status:` " + airing_status + "\n`Episodes:` " + total_episodes +
"\n`Episodes:` " + total_episodes + "\n`Link:` http://anilist.co/anime/" + id +
"\n`Link:` http://anilist.co/anime/" + id + "\n`Synopsis:` " + description.Substring(0, description.Length > 500 ? 500 : description.Length) + "..." +
"\n`Synopsis:` " + description.Substring(0, description.Length > 500 ? 500 : description.Length) + "..." + "\n`img:` " + image_url_lge;
"\n`img:` " + image_url_lge; }
}
}
class MangaResult class MangaResult
{ {
@ -42,15 +40,13 @@
public int total_volumes; public int total_volumes;
public string description; public string description;
public override string ToString() public override string ToString() =>
{ "`Title:` **" + title_english +
return "`Title:` **" + title_english + "**\n`Status:` " + publishing_status +
"**\n`Status:` " + publishing_status + "\n`Chapters:` " + total_chapters +
"\n`Chapters:` " + total_chapters + "\n`Volumes:` " + total_volumes +
"\n`Volumes:` " + total_volumes + "\n`Link:` http://anilist.co/manga/" + id +
"\n`Link:` http://anilist.co/manga/" + id + "\n`Synopsis:` " + description.Substring(0, description.Length > 500 ? 500 : description.Length) + "..." +
"\n`Synopsis:` " + description.Substring(0, description.Length > 500 ? 500 : description.Length) + "..." + "\n`img:` " + image_url_lge;
"\n`img:` " + image_url_lge;
}
} }
} }

View File

@ -1,7 +1,5 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
using Discord.Commands; using Discord.Commands;
@ -24,17 +22,14 @@ namespace NadekoBot
} }
} }
public override Func<CommandEventArgs, Task> DoFunc() public override Func<CommandEventArgs, Task> DoFunc() => async e =>
{ {
return async e => if (CopiedUsers.Contains(e.User.Id)) return;
{
if (CopiedUsers.Contains(e.User.Id)) return;
CopiedUsers.Add(e.User.Id); CopiedUsers.Add(e.User.Id);
await e.Send( " I'll start copying you now."); await e.Send(" I'll start copying you now.");
return; return;
}; };
}
public override void Init(CommandGroupBuilder cgb) public override void Init(CommandGroupBuilder cgb)
{ {
@ -49,16 +44,13 @@ namespace NadekoBot
.Do(StopCopy()); .Do(StopCopy());
} }
private Func<CommandEventArgs, Task> StopCopy() private Func<CommandEventArgs, Task> StopCopy() => async e =>
{ {
return async e => if (!CopiedUsers.Contains(e.User.Id)) return;
{
if (!CopiedUsers.Contains(e.User.Id)) return;
CopiedUsers.Remove(e.User.Id); CopiedUsers.Remove(e.User.Id);
await e.Send( " I wont copy anymore."); await e.Send(" I wont copy anymore.");
return; return;
}; };
}
} }
} }

View File

@ -1,11 +1,8 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
using Discord.Commands; using Discord.Commands;
using Discord.Modules;
using Discord;
using System.Drawing; using System.Drawing;
using System.Drawing.Imaging; using System.Drawing.Imaging;
@ -85,9 +82,7 @@ namespace NadekoBot
}; };
} }
private Image GetDice(int num) { private Image GetDice(int num) => Image.FromFile("images/dice/" + num + ".png");
return Image.FromFile("images/dice/"+num+".png");
}
public override void Init(CommandGroupBuilder cgb) public override void Init(CommandGroupBuilder cgb)
{ {

View File

@ -13,51 +13,51 @@ namespace NadekoBot
public DrawCommand() : base() { } public DrawCommand() : base() { }
public override Func<CommandEventArgs,Task> DoFunc() { public override Func<CommandEventArgs, Task> DoFunc() => async (e) =>
return async (e) => {
{ if (cards == null)
if (cards == null) {
{ await e.Send("Shuffling cards...");
await e.Send("Shuffling cards..."); cards = new Cards();
cards = new Cards(); }
}
try try
{ {
int num = 1; int num = 1;
var isParsed = int.TryParse(e.GetArg("count"), out num); var isParsed = int.TryParse(e.GetArg("count"), out num);
if (!isParsed || num <2) if (!isParsed || num < 2)
{ {
await client.SendFile(e.Channel, cards.DrawACard().Path); await client.SendFile(e.Channel, cards.DrawACard().Path);
return; return;
} }
if (num > 5) if (num > 5)
num = 5; num = 5;
List<Image> images = new List<Image>(); List<Image> images = new List<Image>();
List<Cards.Card> cardObjects = new List<Cards.Card>(); List<Cards.Card> cardObjects = new List<Cards.Card>();
for (int i = 0; i < num; i++) for (int i = 0; i < num; i++)
{ {
if (cards.CardPool.Count == 0 && i!= 0) if (cards.CardPool.Count == 0 && i != 0)
{ {
await e.Send( "No more cards in a deck."); await e.Send("No more cards in a deck.");
break; break;
} }
var currentCard = cards.DrawACard(); var currentCard = cards.DrawACard();
cardObjects.Add(currentCard); cardObjects.Add(currentCard);
images.Add(Image.FromFile(currentCard.Path)); images.Add(Image.FromFile(currentCard.Path));
} }
Bitmap bitmap = ImageHandler.MergeImages(images); Bitmap bitmap = ImageHandler.MergeImages(images);
await client.SendFile(e.Channel, images.Count+" cards.jpg",ImageHandler.ImageToStream(bitmap, ImageFormat.Jpeg)); await client.SendFile(e.Channel, images.Count + " cards.jpg", ImageHandler.ImageToStream(bitmap, ImageFormat.Jpeg));
if (cardObjects.Count == 5) { if (cardObjects.Count == 5)
await e.Send(Cards.GetHandValue(cardObjects)); {
} await e.Send(Cards.GetHandValue(cardObjects));
} }
catch (Exception ex) { }
Console.WriteLine("Error drawing (a) card(s) "+ex.ToString()); catch (Exception ex)
} {
}; Console.WriteLine("Error drawing (a) card(s) " + ex.ToString());
} }
};
public override void Init(CommandGroupBuilder cgb) public override void Init(CommandGroupBuilder cgb)
{ {

View File

@ -13,20 +13,18 @@ namespace NadekoBot
_r = new Random(); _r = new Random();
} }
public override Func<CommandEventArgs, Task> DoFunc() public override Func<CommandEventArgs, Task> DoFunc() => async e =>
{ {
return async e => { int num = _r.Next(0, 2);
int num = _r.Next(0, 2); if (num == 1)
if (num == 1) {
{ await client.SendFile(e.Channel, @"images/coins/heads.png");
await client.SendFile(e.Channel, @"images/coins/heads.png"); }
} else
else {
{ await client.SendFile(e.Channel, @"images/coins/tails.png");
await client.SendFile(e.Channel, @"images/coins/tails.png"); }
} };
};
}
public override void Init(CommandGroupBuilder cgb) public override void Init(CommandGroupBuilder cgb)
{ {

View File

@ -6,32 +6,29 @@ namespace NadekoBot
{ {
class HelpCommand : DiscordCommand class HelpCommand : DiscordCommand
{ {
public override Func<CommandEventArgs, Task> DoFunc() public override Func<CommandEventArgs, Task> DoFunc() => async e =>
{ {
return async e => string helpstr = "Official repo: **github.com/Kwoth/NadekoBot/** \n";
{
string helpstr = "Official repo: **github.com/Kwoth/NadekoBot/** \n";
string lastCategory = ""; string lastCategory = "";
foreach (var com in client.Commands().AllCommands) foreach (var com in client.Commands().AllCommands)
{ {
if (com.Category != lastCategory) if (com.Category != lastCategory)
{ {
helpstr += "\n`----`**`" + com.Category + "`**`----`\n"; helpstr += "\n`----`**`" + com.Category + "`**`----`\n";
lastCategory = com.Category; lastCategory = com.Category;
} }
helpstr += PrintCommandHelp(com); helpstr += PrintCommandHelp(com);
} }
helpstr = helpstr.Replace(NadekoBot.botMention, "@BotName"); helpstr = helpstr.Replace(NadekoBot.botMention, "@BotName");
while (helpstr.Length > 2000) while (helpstr.Length > 2000)
{ {
var curstr = helpstr.Substring(0, 2000); var curstr = helpstr.Substring(0, 2000);
await client.SendMessage(e.User, curstr.Substring(0, curstr.LastIndexOf("\n")+1)); await client.SendMessage(e.User, curstr.Substring(0, curstr.LastIndexOf("\n") + 1));
helpstr = curstr.Substring(curstr.LastIndexOf("\n")+1) + helpstr.Substring(2000); helpstr = curstr.Substring(curstr.LastIndexOf("\n") + 1) + helpstr.Substring(2000);
} }
await client.SendMessage(e.User, helpstr); await client.SendMessage(e.User, helpstr);
}; };
}
public override void Init(CommandGroupBuilder cgb) public override void Init(CommandGroupBuilder cgb)
{ {

View File

@ -8,7 +8,6 @@ using System.Timers;
using System.Threading.Tasks; using System.Threading.Tasks;
using System.Diagnostics; using System.Diagnostics;
using System.Drawing; using System.Drawing;
using Newtonsoft.Json.Linq;
using System.IO; using System.IO;
using System.Text; using System.Text;
using System.Drawing.Imaging; using System.Drawing.Imaging;
@ -29,10 +28,7 @@ namespace NadekoBot.Modules
return cb; return cb;
} }
private CommandBuilder AliasCommand(CommandBuilder cb, string txt) private CommandBuilder AliasCommand(CommandBuilder cb, string txt) => cb.Alias(new string[] { "," + txt, "-" + txt });
{
return cb.Alias(new string[] { "," + txt, "-" + txt });
}
public override void Install(ModuleManager manager) public override void Install(ModuleManager manager)
{ {
@ -546,7 +542,7 @@ namespace NadekoBot.Modules
invites+=invite.Url+"\n"; invites+=invite.Url+"\n";
i++; i++;
} }
catch (Exception ex) { catch (Exception) {
j++; j++;
continue; continue;
} }
@ -641,11 +637,6 @@ namespace NadekoBot.Modules
} }
private Func<CommandEventArgs, Task> SayYes() private Func<CommandEventArgs, Task> SayYes()
{ => async e => await NadekoBot.client.SendMessage(e.Channel, "Yes. :)");
return async e =>
{
await NadekoBot.client.SendMessage(e.Channel, "Yes. :)");
};
}
} }
} }