71 lines
2.1 KiB
C#
71 lines
2.1 KiB
C#
namespace ChatBot.Services.Telegram.Commands
|
|
{
|
|
/// <summary>
|
|
/// Контекст выполнения команды Telegram
|
|
/// </summary>
|
|
public class TelegramCommandContext
|
|
{
|
|
/// <summary>
|
|
/// ID чата
|
|
/// </summary>
|
|
public long ChatId { get; set; }
|
|
|
|
/// <summary>
|
|
/// Имя пользователя
|
|
/// </summary>
|
|
public string Username { get; set; } = string.Empty;
|
|
|
|
/// <summary>
|
|
/// Текст сообщения
|
|
/// </summary>
|
|
public string MessageText { get; set; } = string.Empty;
|
|
|
|
/// <summary>
|
|
/// Тип чата
|
|
/// </summary>
|
|
public string ChatType { get; set; } = string.Empty;
|
|
|
|
/// <summary>
|
|
/// Название чата
|
|
/// </summary>
|
|
public string ChatTitle { get; set; } = string.Empty;
|
|
|
|
/// <summary>
|
|
/// Аргументы команды (все после названия команды)
|
|
/// </summary>
|
|
public string Arguments { get; set; } = string.Empty;
|
|
|
|
/// <summary>
|
|
/// Создает новый контекст команды
|
|
/// </summary>
|
|
public static TelegramCommandContext Create(
|
|
long chatId,
|
|
string username,
|
|
string messageText,
|
|
string chatType,
|
|
string chatTitle
|
|
)
|
|
{
|
|
var commandParts = messageText.Split(' ', 2);
|
|
|
|
// Убираем @botusername если есть
|
|
if (commandParts[0].Contains('@'))
|
|
{
|
|
commandParts[0] = commandParts[0].Split('@')[0];
|
|
}
|
|
|
|
var arguments = commandParts.Length > 1 ? commandParts[1].Trim() : string.Empty;
|
|
|
|
return new TelegramCommandContext
|
|
{
|
|
ChatId = chatId,
|
|
Username = username,
|
|
MessageText = messageText,
|
|
ChatType = chatType,
|
|
ChatTitle = chatTitle,
|
|
Arguments = arguments,
|
|
};
|
|
}
|
|
}
|
|
}
|