move to correct directory

This commit is contained in:
2024-05-29 01:49:53 +03:00
parent db5cd93977
commit 615e39b326
17 changed files with 2 additions and 2 deletions
@@ -0,0 +1,75 @@
using BotFramework.Attributes;
using Kruzya.TelegramBot.Core.Data;
using Kruzya.TelegramBot.Core.Extensions;
using Kruzya.TelegramBot.Core.Handler;
using Kruzya.TelegramBot.Core.Service;
using Kruzya.TelegramBot.CustomChatAddOns.Data;
using Kruzya.TelegramBot.CustomChatAddOns.Options;
using Kruzya.TelegramBot.CustomChatAddOns.Service;
using Telegram.Bot.Types.Enums;
namespace Kruzya.TelegramBot.CustomChatAddOns.Handler
{
public class Config : CommonHandler
{
private readonly CustomChatHandler _option;
private readonly UserService _userService;
private readonly InteropService _interopService;
public Config(CustomChatHandler option, UserService userService, InteropService interopService, CoreContext db) : base(db)
{
_option = option;
_userService = userService;
_interopService = interopService;
}
private bool IsAllowedChatType(ChatType chatType)
{
// TODO: move to class constant.
var allowedChatTypes = new[] { ChatType.Supergroup, ChatType.Group, ChatType.Channel };
return allowedChatTypes.Contains(chatType);
}
[ParametrizedCommand("set_custom_handler")]
public async Task Handle(Uri endpoint)
{
if (!IsAllowedChatType(Chat.Type))
{
return;
}
if (!await Bot.IsUserAdminAsync(Chat, From))
{
await Reply("Sorry, you cannot do this");
return;
}
// URLs to somewhere in local bot network should be allowed for using only super-admins.
// It may be bypassed via using, for example, "kitties" instead of "kitties.bot.svc.cluster.local". Maybe check resulting IP?
if (endpoint.Host.EndsWith(".local") && !_userService.IsUserSuper(From.Id))
{
await Reply("Sorry, you cannot do this");
return;
}
try
{
var ping = Ping.From(Message!);
var pong = await _interopService.PostMessage<Ping, Pong>(endpoint.ToString(), ping);
if (pong.Confirmation != ping.Confirmation)
{
throw new Exception("Invalid response");
}
}
// catch (HttpRequestException e)
catch (Exception e)
{
await Reply($"Sorry, this URL cannot be set as chat webhook: {e.Message}");
return;
}
await _option.SetValueAsync(Chat.Id, endpoint.ToString());
await Reply("Done, configured");
}
}
}
@@ -0,0 +1,44 @@
using BotFramework;
using BotFramework.Attributes;
using Kruzya.TelegramBot.CustomChatAddOns.Data;
using Kruzya.TelegramBot.CustomChatAddOns.Data.WebhookCommand;
using Kruzya.TelegramBot.CustomChatAddOns.Options;
using Kruzya.TelegramBot.CustomChatAddOns.Service;
namespace Kruzya.TelegramBot.CustomChatAddOns.Handler
{
public class MessageHandler : BotEventHandler
{
private readonly CustomChatHandler _option;
private readonly InteropService _interopService;
public MessageHandler(CustomChatHandler option, InteropService interopService)
{
_option = option;
_interopService = interopService;
}
[Message]
[Priority(short.MinValue + 10)]
public async Task DeliverMessage()
{
var message = RawUpdate.Message;
if (message == null)
{
return;
}
var url = await _option.GetValueAsync(Chat.Id);
if (string.IsNullOrWhiteSpace(url))
{
return;
}
var commands = await _interopService.PostMessage<NewMessage, List<IWebhookCommand>>(url, new() { Message = message });
foreach (var command in commands)
{
await command.Execute(Bot, message);
}
}
}
}