Skip to content

Commit a237261

Browse files
committed
fixes
1 parent 9e24c6a commit a237261

5 files changed

Lines changed: 89 additions & 14 deletions

File tree

MedalBOT/Commands/ChanServCommand.cs

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,14 +9,14 @@ public class ChanServCommand : ICommand
99

1010
public (bool handled, string response) Process(BotContext ctx, string senderNick, string message, string fullLine)
1111
{
12-
if (!message.StartsWith("!banlist") && !message.StartsWith("!addban") &&
12+
if (!message.StartsWith("!blist") && !message.StartsWith("!addban") &&
1313
!message.StartsWith("!delban") && !message.StartsWith("!tb"))
1414
return (false, null);
1515

1616
if (!ctx.Admins.Contains(senderNick))
1717
return (true, "You must be an admin to use ChanServ commands.");
1818

19-
if (message.StartsWith("!banlist"))
19+
if (message.StartsWith("!blist"))
2020
return HandleBanList(ctx, senderNick);
2121

2222
if (message.StartsWith("!addban"))
@@ -35,7 +35,7 @@ public class ChanServCommand : ICommand
3535
{
3636
ctx.Writer?.WriteLine($"PRIVMSG ChanServ :bans {ctx.Channel}");
3737
ctx.Logger?.Log($"[CHANSERV] {senderNick} requested banlist for {ctx.Channel}");
38-
return (true, $"?? Requesting ban list from ChanServ...");
38+
return (false, null);
3939
}
4040

4141
private (bool, string) HandleAddBan(BotContext ctx, string senderNick, string message)
@@ -49,7 +49,7 @@ public class ChanServCommand : ICommand
4949

5050
ctx.Writer?.WriteLine($"PRIVMSG ChanServ :addban {ctx.Channel} {target} {reason}");
5151
ctx.Logger?.Log($"[CHANSERV] {senderNick} added ban for {target} in {ctx.Channel}");
52-
return (true, $"?? Sending ban request for {target}...");
52+
return (false, null);
5353
}
5454

5555
private (bool, string) HandleDelBan(BotContext ctx, string senderNick, string message)
@@ -62,7 +62,7 @@ public class ChanServCommand : ICommand
6262

6363
ctx.Writer?.WriteLine($"PRIVMSG ChanServ :delban {ctx.Channel} {target}");
6464
ctx.Logger?.Log($"[CHANSERV] {senderNick} removed ban for {target} in {ctx.Channel}");
65-
return (true, $"? Sending unban request for {target}...");
65+
return (false, null);
6666
}
6767

6868
private (bool, string) HandleTimedBan(BotContext ctx, string senderNick, string message)
@@ -77,7 +77,8 @@ public class ChanServCommand : ICommand
7777

7878
ctx.Writer?.WriteLine($"PRIVMSG ChanServ :addtimedban {ctx.Channel} {target} {duration} {reason}");
7979
ctx.Logger?.Log($"[CHANSERV] {senderNick} added timed ban for {target} ({duration}) in {ctx.Channel}");
80-
return (true, $"?? Sending {duration} timed ban for {target}...");
80+
return (false, null);
8181
}
8282
}
8383
}
84+

MedalBOT/Commands/CommandManager.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ public CommandManager()
1414
_commands.Add(new MuteCommand());
1515
_commands.Add(new ChanServCommand());
1616
_commands.Add(new SpamServCommand());
17+
_commands.Add(new SayCommand());
1718
}
1819

1920
public string TryProcess(BotContext ctx, string senderNick, string message, string fullLine)
@@ -33,4 +34,4 @@ public string TryProcess(BotContext ctx, string senderNick, string message, stri
3334
return null;
3435
}
3536
}
36-
}
37+
}

MedalBOT/Commands/SayCommand.cs

Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
using System;
2+
using System.Linq;
3+
4+
namespace MedalBot.Commands
5+
{
6+
public class SayCommand : ICommand
7+
{
8+
public string Name => "Say";
9+
10+
public (bool handled, string response) Process(BotContext ctx, string senderNick, string message, string fullLine)
11+
{
12+
if (!message.StartsWith("!say"))
13+
return (false, null);
14+
15+
if (!ctx.Admins.Contains(senderNick))
16+
return (true, "You must be an admin to use say commands.");
17+
18+
if (message.StartsWith("!sayto "))
19+
return HandleSayTo(ctx, senderNick, message);
20+
21+
if (message.StartsWith("!say "))
22+
return HandleSay(ctx, senderNick, message);
23+
24+
return (false, null);
25+
}
26+
27+
public bool TryHandleDiscordSay(BotContext ctx, string message)
28+
{
29+
if (!message.StartsWith("!say "))
30+
return false;
31+
32+
if (!ctx.RelayDiscordToIrc)
33+
return false;
34+
35+
string text = message.Substring(5);
36+
if (string.IsNullOrWhiteSpace(text))
37+
return false;
38+
39+
ctx.Writer?.WriteLine($"PRIVMSG {ctx.Channel} :{text}");
40+
return true;
41+
}
42+
43+
private (bool, string) HandleSay(BotContext ctx, string senderNick, string message)
44+
{
45+
if (message.Length <= 5)
46+
return (true, "Usage: !say <message>");
47+
48+
string text = message.Substring(5).Trim();
49+
if (string.IsNullOrWhiteSpace(text))
50+
return (true, "Usage: !say <message>");
51+
52+
ctx.Logger?.Log($"[SAY] {senderNick} said: {text}");
53+
return (true, text);
54+
}
55+
56+
private (bool, string) HandleSayTo(BotContext ctx, string senderNick, string message)
57+
{
58+
var parts = message.Split(' ', StringSplitOptions.RemoveEmptyEntries);
59+
if (parts.Length < 3)
60+
return (true, "Usage: !sayto <nick> <message>");
61+
62+
string targetNick = parts[1];
63+
string text = string.Join(" ", parts.Skip(2));
64+
65+
ctx.Writer?.WriteLine($"PRIVMSG {targetNick} :{text}");
66+
ctx.Logger?.Log($"[SAYTO] {senderNick} sent PM to {targetNick}: {text}");
67+
return (false, null);
68+
}
69+
}
70+
}
71+

MedalBOT/Commands/SpamServCommand.cs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ public class SpamServCommand : ICommand
3232
{
3333
ctx.Writer?.WriteLine($"PRIVMSG SpamServ :listbadwords {ctx.Channel}");
3434
ctx.Logger?.Log($"[SPAMSERV] {senderNick} requested badwords list for {ctx.Channel}");
35-
return (true, $"?? Requesting bad words list from SpamServ...");
35+
return (false, null);
3636
}
3737

3838
private (bool, string) HandleAddBadWord(BotContext ctx, string senderNick, string message)
@@ -46,7 +46,7 @@ public class SpamServCommand : ICommand
4646

4747
ctx.Writer?.WriteLine($"PRIVMSG SpamServ :addbadword {ctx.Channel} {word} {reason}");
4848
ctx.Logger?.Log($"[SPAMSERV] {senderNick} added bad word '{word}' to {ctx.Channel}");
49-
return (true, $"?? Adding '{word}' to bad words list...");
49+
return (false, null);
5050
}
5151

5252
private (bool, string) HandleDelBadWord(BotContext ctx, string senderNick, string message)
@@ -59,7 +59,8 @@ public class SpamServCommand : ICommand
5959

6060
ctx.Writer?.WriteLine($"PRIVMSG SpamServ :delbadword {ctx.Channel} {word}");
6161
ctx.Logger?.Log($"[SPAMSERV] {senderNick} removed bad word '{word}' from {ctx.Channel}");
62-
return (true, $"? Removing '{word}' from bad words list...");
62+
return (false, null);
6363
}
6464
}
6565
}
66+

MedalBOT/Services/DiscordBotService.cs

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,13 @@ public class DiscordBotService
1212
private readonly DiscordSocketClient _client;
1313
private ISocketMessageChannel _channel;
1414
private readonly ulong _channelId;
15+
private SayCommand _sayCommand;
1516

1617
public DiscordBotService(BotContext ctx, ulong channelId)
1718
{
1819
_ctx = ctx;
1920
_channelId = channelId;
21+
_sayCommand = new SayCommand();
2022

2123
_client = new DiscordSocketClient(new DiscordSocketConfig
2224
{
@@ -65,11 +67,10 @@ private async Task OnMessageReceived(SocketMessage msg)
6567

6668
if (!_ctx.RelayDiscordToIrc) return;
6769

68-
if (content.StartsWith("!say "))
70+
if (_sayCommand.TryHandleDiscordSay(_ctx, content))
6971
{
70-
string text = content.Substring(5);
71-
_ctx.Writer?.WriteLine($"PRIVMSG {_ctx.Channel} :[DC] {msg.Author.Username}: {text}");
72+
return;
7273
}
7374
}
7475
}
75-
}
76+
}

0 commit comments

Comments
 (0)