[rules] Start work on rules command.

This commit is contained in:
West14
2022-01-18 20:34:21 +02:00
parent 5555d73673
commit 3e83488ddd
2 changed files with 96 additions and 0 deletions
+48
View File
@@ -0,0 +1,48 @@
#nullable enable
using System.Collections.Generic;
using System.Linq;
using Telegram.Bot.Types;
using Telegram.Bot.Types.Enums;
namespace Kruzya.TelegramBot.Core.Service;
internal class EntityFormatter
{
private static readonly Dictionary<MessageEntityType, string> HtmlMap = new()
{
{ MessageEntityType.Bold, "<b>{0}</b>" },
{ MessageEntityType.Code, "<code>{0}</code>" },
{ MessageEntityType.Italic, "<i>{0}</i>" },
{ MessageEntityType.TextMention, "<a href=\"tg://user?id={1}\">{0}</a>" },
{ MessageEntityType.Pre, "<pre>{0}</pre>" },
{ MessageEntityType.Underline, "<u>{0}</u>" }
};
private static readonly Dictionary<MessageEntityType, string> MarkdownMap = new()
{
{ MessageEntityType.Bold, "*{0}*" },
{ MessageEntityType.Code, "```{0}```" },
{ MessageEntityType.Italic, "_{0}_" },
{ MessageEntityType.TextMention, "[{0}](tg://user?id={1})" },
{ MessageEntityType.Pre, "```{0}```" },
{ MessageEntityType.Underline, "__{0}__" }
};
public string? FormatMessage(Message msg)
{
var text = msg.Text;
var entities = msg.Entities;
if (entities == null || text == null) return text;
foreach (var entity in entities.Reverse())
{
var entityText = text.Substring(entity.Offset, entity.Length);
text = text
.Remove(entity.Offset, entity.Length);
}
return text;
}
}
+48
View File
@@ -0,0 +1,48 @@
using System.Threading.Tasks;
using BotFramework.Attributes;
using BotFramework.Enums;
using Kruzya.TelegramBot.Core.Data;
using Kruzya.TelegramBot.Core.Extensions;
using Telegram.Bot;
namespace West.TelegramBot.ChatManagement.Handler
{
internal partial class Rules : ManagementHandler
{
[Command(InChat.Public, "setrules", CommandParseMode.Both)]
public async Task HandleSetRules()
{
var replyToMessage = Message?.ReplyToMessage;
var text = replyToMessage?.Text;
if (replyToMessage == null || text == null)
{
return;
}
//var entities = replyToMessage.Entities;
//if (entities != null)
//{
// //foreach (var entity in entities)
// //{
// // var entityText = text.Substring(entity.Offset, entity.Length);
// // text = text
// // .Remove(entity.Offset, entity.Length)
// // .Insert(entity.Offset)
// //}
//}
await Bot.SendTextMessageAsync(Chat, "kruzefag@gmail.com");
}
[Command(InChat.Public, "rules", CommandParseMode.Both)]
public async Task HandleRules()
{
var opt = Db.UserValues.FindOrCreateOption(Chat.Id, "rules");
}
public Rules(CoreContext db) : base(db)
{
}
}
}