Fixing the prototype solution of group commands detection
This commit is contained in:
parent
801c0b77f8
commit
a7411176e6
@ -1,4 +1,5 @@
|
|||||||
using System.Collections.Generic;
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using Newtonsoft.Json;
|
using Newtonsoft.Json;
|
||||||
@ -9,16 +10,35 @@ namespace TelegramBotBase.Base;
|
|||||||
|
|
||||||
public class MessageResult : ResultBase
|
public class MessageResult : ResultBase
|
||||||
{
|
{
|
||||||
internal MessageResult()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
public MessageResult(Update update)
|
public MessageResult(Update update)
|
||||||
{
|
{
|
||||||
UpdateData = update;
|
UpdateData = update;
|
||||||
|
|
||||||
|
init();
|
||||||
}
|
}
|
||||||
|
|
||||||
public Update UpdateData { get; set; }
|
void init()
|
||||||
|
{
|
||||||
|
IsAction = UpdateData.CallbackQuery != null;
|
||||||
|
|
||||||
|
IsBotCommand = UpdateData.Message.Entities.Any(a => a.Type == MessageEntityType.BotCommand);
|
||||||
|
|
||||||
|
if (!IsBotCommand)
|
||||||
|
return;
|
||||||
|
|
||||||
|
BotCommand = MessageText.Split(' ')[0];
|
||||||
|
|
||||||
|
IsBotGroupCommand = BotCommand.Contains("@");
|
||||||
|
|
||||||
|
if (IsBotGroupCommand)
|
||||||
|
{
|
||||||
|
BotCommand = BotCommand.Substring(0, BotCommand.LastIndexOf('@'));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public Update UpdateData { get; private set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Returns the Device/ChatId
|
/// Returns the Device/ChatId
|
||||||
@ -55,17 +75,17 @@ public class MessageResult : ResultBase
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Is this an action ? (i.e. button click)
|
/// Is this an action ? (i.e. button click)
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public bool IsAction => UpdateData.CallbackQuery != null;
|
public bool IsAction { get; private set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Is this a command ? Starts with a slash '/' and a command
|
/// Is this a command ? Starts with a slash '/' and a command
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public bool IsBotCommand => MessageText.StartsWith("/");
|
public bool IsBotCommand { get; private set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Is this a bot command sent from a group via @BotId ?
|
/// Is this a bot command sent from a group via @BotId ?
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public bool IsBotGroupCommand => IsBotCommand && MessageText.Contains("@");
|
public bool IsBotGroupCommand { get; private set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Returns a List of all parameters which has been sent with the command itself (i.e. /start 123 456 789 =>
|
/// Returns a List of all parameters which has been sent with the command itself (i.e. /start 123 456 789 =>
|
||||||
@ -88,23 +108,7 @@ public class MessageResult : ResultBase
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Returns just the command (i.e. /start 1 2 3 => /start)
|
/// Returns just the command (i.e. /start 1 2 3 => /start)
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string BotCommand
|
public string BotCommand { get; private set; }
|
||||||
{
|
|
||||||
get
|
|
||||||
{
|
|
||||||
if (IsBotGroupCommand)
|
|
||||||
{
|
|
||||||
return MessageText.Substring(0, MessageText.LastIndexOf('@')).Split(' ')[0];
|
|
||||||
}
|
|
||||||
|
|
||||||
if (IsBotCommand)
|
|
||||||
{
|
|
||||||
return MessageText.Split(' ')[0];
|
|
||||||
}
|
|
||||||
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Returns if this message will be used on the first form or not.
|
/// Returns if this message will be used on the first form or not.
|
||||||
|
|||||||
@ -197,13 +197,10 @@ public sealed class BotBase
|
|||||||
/// <param name="deviceId">Contains the device/chat id of the device to update.</param>
|
/// <param name="deviceId">Contains the device/chat id of the device to update.</param>
|
||||||
public async Task InvokeMessageLoop(long deviceId)
|
public async Task InvokeMessageLoop(long deviceId)
|
||||||
{
|
{
|
||||||
var mr = new MessageResult
|
var mr = new MessageResult(new Update
|
||||||
{
|
|
||||||
UpdateData = new Update
|
|
||||||
{
|
{
|
||||||
Message = new Message()
|
Message = new Message()
|
||||||
}
|
});
|
||||||
};
|
|
||||||
|
|
||||||
await InvokeMessageLoop(deviceId, mr);
|
await InvokeMessageLoop(deviceId, mr);
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user