forked from EllieBotDevs/elliebot
44 lines
No EOL
1.5 KiB
C#
44 lines
No EOL
1.5 KiB
C#
using EllieBot.Common.ModuleBehaviors;
|
|
|
|
namespace EllieBot.Modules.Help.Services;
|
|
|
|
public class HelpService : IExecNoCommand, IEService
|
|
{
|
|
private readonly BotConfigService _bss;
|
|
private readonly IReplacementService _rs;
|
|
private readonly IMessageSenderService _sender;
|
|
|
|
public HelpService(BotConfigService bss, IReplacementService repSvc, IMessageSenderService sender)
|
|
{
|
|
_bss = bss;
|
|
_rs = repSvc;
|
|
_sender = sender;
|
|
}
|
|
|
|
public async Task ExecOnNoCommandAsync(IGuild? guild, IUserMessage msg)
|
|
{
|
|
var settings = _bss.Data;
|
|
if (guild is null)
|
|
{
|
|
if (string.IsNullOrWhiteSpace(settings.DmHelpText) || settings.DmHelpText == "-")
|
|
return;
|
|
|
|
// only send dm help text if it contains one of the keywords, if they're specified
|
|
// if they're not, then reply to every DM
|
|
if (settings.DmHelpTextKeywords is not null
|
|
&& !settings.DmHelpTextKeywords.Any(k => msg.Content.Contains(k)))
|
|
{
|
|
return;
|
|
}
|
|
|
|
var repCtx = new ReplacementContext(guild: guild, channel: msg.Channel, user: msg.Author)
|
|
.WithOverride("%prefix%", () => _bss.Data.Prefix)
|
|
.WithOverride("%bot.prefix%", () => _bss.Data.Prefix);
|
|
|
|
var text = SmartText.CreateFrom(settings.DmHelpText);
|
|
text = await _rs.ReplaceAsync(text, repCtx);
|
|
|
|
await _sender.Response(msg.Channel).Text(text).SendAsync();
|
|
}
|
|
}
|
|
} |