mirror of
https://github.com/Bubuni-Team/telegram-bot.git
synced 2026-07-31 00:29:24 +03:00
Assorted improvements.
- Move BotExtension to Core. - Update BotFramework - Fix Fun commands. - Remove ChatManagement dependency from Entertainment.
This commit is contained in:
+1
-1
@@ -8,7 +8,7 @@
|
||||
|
||||
<PropertyGroup Condition=" '$(RunConfiguration)' == 'Core' " />
|
||||
<ItemGroup>
|
||||
<PackageReference Include="AleXr64.BotFramework" Version="0.6.3-gea779222d8" />
|
||||
<PackageReference Include="AleXr64.BotFramework" Version="0.6.5-g35decc8b27" />
|
||||
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="5.0.13">
|
||||
<PrivateAssets>all</PrivateAssets>
|
||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
using Telegram.Bot;
|
||||
using Telegram.Bot.Types;
|
||||
|
||||
namespace West.TelegramBot.ChatManagement.Extensions
|
||||
namespace Kruzya.TelegramBot.Core.Extensions
|
||||
{
|
||||
public static class BotExtension
|
||||
{
|
||||
@@ -8,7 +8,6 @@ using Kruzya.TelegramBot.Core.Extensions;
|
||||
using Telegram.Bot;
|
||||
using Telegram.Bot.Types;
|
||||
using Telegram.Bot.Types.Enums;
|
||||
using West.TelegramBot.ChatManagement.Extensions;
|
||||
|
||||
namespace West.TelegramBot.ChatManagement.Handler
|
||||
{
|
||||
|
||||
@@ -1,13 +1,9 @@
|
||||
using Kruzya.TelegramBot.Core;
|
||||
using West.TelegramBot.ChatManagement;
|
||||
|
||||
namespace West.Entertainment
|
||||
{
|
||||
public class Entertainment : Module
|
||||
{
|
||||
public Entertainment(Core core) : base(core)
|
||||
{
|
||||
// core.EnsureLoaded<ChatManagement>();
|
||||
}
|
||||
public Entertainment(Core core) : base(core) { }
|
||||
}
|
||||
}
|
||||
@@ -8,7 +8,6 @@
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\..\Core\Core.csproj" />
|
||||
<ProjectReference Include="..\ChatManagement\ChatManagement.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
|
||||
@@ -2,23 +2,33 @@
|
||||
|
||||
using System.Text.RegularExpressions;
|
||||
using System.Threading.Tasks;
|
||||
using BotFramework.Attributes;
|
||||
using BotFramework.Enums;
|
||||
using BotFramework;
|
||||
using Castle.Core.Internal;
|
||||
using Kruzya.TelegramBot.Core.Data;
|
||||
using Kruzya.TelegramBot.Core.Extensions;
|
||||
using Telegram.Bot;
|
||||
using West.TelegramBot.ChatManagement.Handler;
|
||||
using Telegram.Bot.Types;
|
||||
|
||||
namespace West.Entertainment.Handler.Fun
|
||||
{
|
||||
public abstract class AbstractAnimationReply : ManagementHandler
|
||||
public abstract class AbstractAnimationReply : BotEventHandler
|
||||
{
|
||||
private readonly CoreContext _db;
|
||||
|
||||
protected Message? Message => RawUpdate.Message;
|
||||
|
||||
private User? RepliedUser => Message?.ReplyToMessage?.From;
|
||||
|
||||
protected abstract Regex AnimationMatch
|
||||
{
|
||||
get;
|
||||
}
|
||||
|
||||
protected AbstractAnimationReply(CoreContext db)
|
||||
{
|
||||
_db = db;
|
||||
}
|
||||
|
||||
protected abstract string GetAnimationName();
|
||||
|
||||
protected virtual bool CanHandle() => true;
|
||||
@@ -30,26 +40,31 @@ namespace West.Entertainment.Handler.Fun
|
||||
|
||||
var animationFileOption = await GetAnimationFileOption();
|
||||
animationFileOption.SetValue(animation.FileId);
|
||||
Db.MarkAsModified(animationFileOption);
|
||||
_db.MarkAsModified(animationFileOption);
|
||||
}
|
||||
|
||||
[Message(InChat.Public, MessageFlag.HasText)]
|
||||
protected virtual async Task<bool> HandleAnimation(int? replyToMessageId = null)
|
||||
// ReSharper disable once MemberCanBeProtected.Global
|
||||
public virtual async Task<bool> HandleAnimation()
|
||||
{
|
||||
var animationFileId = (await GetAnimationFileOption()).GetValue(string.Empty);
|
||||
if (animationFileId.IsNullOrEmpty() || !AnimationMatch.IsMatch(Message!.Text!) || !CanHandle()) return false;
|
||||
|
||||
|
||||
await Bot.SendAnimationAsync(Chat.Id, animationFileId,
|
||||
replyToMessageId: replyToMessageId ?? Message?.MessageId);
|
||||
replyToMessageId: GetMessageIdToReply() ?? Message?.MessageId);
|
||||
return true;
|
||||
}
|
||||
|
||||
private async Task<BotUserValue> GetAnimationFileOption()
|
||||
{
|
||||
return await Db.UserValues.FindOrCreateOption(Chat.Id, $"{GetAnimationName()}File");
|
||||
return await _db.UserValues.FindOrCreateOption(Chat.Id, $"{GetAnimationName()}File");
|
||||
}
|
||||
|
||||
protected AbstractAnimationReply(CoreContext db) : base(db) {}
|
||||
private async Task<bool> CanPunish()
|
||||
{
|
||||
return RepliedUser != null && await Bot.CanPunishMember(Chat, From, RepliedUser);
|
||||
}
|
||||
|
||||
protected virtual int? GetMessageIdToReply() => Message?.MessageId;
|
||||
}
|
||||
}
|
||||
@@ -13,17 +13,20 @@ namespace West.Entertainment.Handler.Fun
|
||||
{
|
||||
public Bayan(CoreContext db) : base(db) { }
|
||||
|
||||
protected override Regex AnimationMatch => new("^баян$", RegexOptions.IgnoreCase);
|
||||
|
||||
protected override string GetAnimationName() => "bayan";
|
||||
protected override Regex AnimationMatch
|
||||
=> new("^баян$", RegexOptions.IgnoreCase);
|
||||
|
||||
protected override string GetAnimationName()
|
||||
=> "bayan";
|
||||
|
||||
[Command(InChat.Public, "setbayan", CommandParseMode.Both)]
|
||||
public async Task HandleSetBayan() => await HandleSetAnimation();
|
||||
public async Task HandleSetBayan()
|
||||
=> await HandleSetAnimation();
|
||||
|
||||
protected override async Task<bool> HandleAnimation(int? replyToMessageId = null)
|
||||
[Message(InChat.Public, MessageFlag.HasText)]
|
||||
public override async Task<bool> HandleAnimation()
|
||||
{
|
||||
if (await base.HandleAnimation(replyToMessageId))
|
||||
if (await base.HandleAnimation())
|
||||
{
|
||||
await Bot.DeleteMessageAsync(Chat.Id, Message!.MessageId);
|
||||
}
|
||||
@@ -31,7 +34,13 @@ namespace West.Entertainment.Handler.Fun
|
||||
return true;
|
||||
}
|
||||
|
||||
protected override bool CanHandle() => Message?.ReplyToMessage != null;
|
||||
protected override int? GetMessageIdToReply()
|
||||
{
|
||||
return Message!.ReplyToMessage!.MessageId;
|
||||
}
|
||||
|
||||
protected override bool CanHandle()
|
||||
=> Message?.ReplyToMessage != null;
|
||||
|
||||
}
|
||||
}
|
||||
@@ -13,12 +13,20 @@ namespace West.Entertainment.Handler.Fun
|
||||
protected override Regex AnimationMatch =>
|
||||
new("питон|пайтон|python|путхон|питухон|петухон", RegexOptions.IgnoreCase);
|
||||
|
||||
protected override string GetAnimationName() => "python";
|
||||
protected override string GetAnimationName()
|
||||
=> "python";
|
||||
|
||||
protected override bool CanHandle() => !Message!.Text!.Contains("/setpython");
|
||||
protected override bool CanHandle()
|
||||
=> !Message!.Text!.Contains("/setpython");
|
||||
|
||||
[Command(InChat.Public, "setpython", CommandParseMode.Both)]
|
||||
public async Task HandleSetPython() => await HandleSetAnimation();
|
||||
public async Task HandleSetPython()
|
||||
=> await HandleSetAnimation();
|
||||
|
||||
[Message(InChat.Public, MessageFlag.HasText)]
|
||||
public override async Task<bool> HandleAnimation()
|
||||
=> await base.HandleAnimation();
|
||||
|
||||
|
||||
public Python(CoreContext db) : base(db) { }
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user