mirror of
https://github.com/moeacgx/Telegram-Panel.git
synced 2026-09-03 07:17:51 +08:00
## 本次版本主要更新 - 修复公开 issue 相关任务配置体验:消息换行、Bot start 链接、历史任务名称和活跃任务消息规则。 - 优化任务中心创建/编辑:支持自定义即时任务名称、移动端纵向排版、回复/转发/去重配置。 - 优化账号选择:账号显示用户可见编号,任务表单账号来源在“账号分类选择”和“账号编号填写”之间二选一。 - 优化账号分类、API 权重输入和批量任务并发设置即时生效。 Dev 已通过云端验收:commit db1a83d,dev-latest healthy,/ui/dashboard=200,/api/panel/auth/me version=1.31.57,任务页资源包含账号来源切换并移除旧合并文案。
89 lines
3.2 KiB
C#
89 lines
3.2 KiB
C#
using TelegramPanel.Core.Services.Telegram;
|
|
using TL;
|
|
using Xunit;
|
|
|
|
namespace TelegramPanel.Web.Tests;
|
|
|
|
public sealed class TelegramBotActiveTargetTests
|
|
{
|
|
[Theory]
|
|
[InlineData("@examplebot", "examplebot")]
|
|
[InlineData("examplebot", "examplebot")]
|
|
[InlineData("https://t.me/examplebot?start=abc", "examplebot")]
|
|
[InlineData("https://t.me/SpamBot", "SpamBot")]
|
|
[InlineData("t.me/examplebot?start=abc", "examplebot")]
|
|
[InlineData("tg://resolve?domain=examplebot&start=abc", "examplebot")]
|
|
public void Bot活跃目标识别支持常见Bot链接(string input, string expected)
|
|
{
|
|
Assert.True(AccountTelegramToolsService.TryNormalizeTelegramBotUsername(input, out var username));
|
|
Assert.Equal(expected, username);
|
|
}
|
|
|
|
[Theory]
|
|
[InlineData("@regularuser")]
|
|
[InlineData("https://t.me/+inviteHash")]
|
|
[InlineData("-1001234567890")]
|
|
[InlineData("https://t.me/channelname")]
|
|
public void 非Bot目标不会被抢先按Bot私聊解析(string input)
|
|
{
|
|
Assert.False(AccountTelegramToolsService.TryNormalizeTelegramBotUsername(input, out _));
|
|
}
|
|
|
|
[Theory]
|
|
[InlineData("https://t.me/channelname/123", "channelname", 123)]
|
|
[InlineData("t.me/channelname/456?single", "channelname", 456)]
|
|
[InlineData("https://t.me/c/1234567890/789", "-1001234567890", 789)]
|
|
[InlineData("https://t.me/c/1234567890/11/12", "-1001234567890", 12)]
|
|
public void 消息链接解析支持公开和私有消息链接(string input, string expectedSource, int expectedMessageId)
|
|
{
|
|
Assert.True(AccountTelegramToolsService.TryParseTelegramMessageReference(input, out var reference, out var error), error);
|
|
Assert.NotNull(reference);
|
|
Assert.Equal(expectedSource, reference!.SourceTarget);
|
|
Assert.Equal(expectedMessageId, reference.MessageId);
|
|
}
|
|
|
|
[Theory]
|
|
[InlineData("https://t.me/channelname")]
|
|
[InlineData("https://example.com/channel/123")]
|
|
public void 消息链接解析拒绝缺少消息Id或非Telegram链接(string input)
|
|
{
|
|
Assert.False(AccountTelegramToolsService.TryParseTelegramMessageReference(input, out var reference, out var error));
|
|
Assert.Null(reference);
|
|
Assert.False(string.IsNullOrWhiteSpace(error));
|
|
}
|
|
|
|
[Fact]
|
|
public void 最新消息作者识别优先使用出站标记()
|
|
{
|
|
var message = new Message
|
|
{
|
|
flags = Message.Flags.out_,
|
|
from_id = new PeerUser { user_id = 999 }
|
|
};
|
|
|
|
Assert.True(AccountTelegramToolsService.IsMessageFromCurrentAccount(message, accountUserId: 123));
|
|
}
|
|
|
|
[Fact]
|
|
public void 最新消息作者识别支持当前账号UserId()
|
|
{
|
|
var message = new Message
|
|
{
|
|
from_id = new PeerUser { user_id = 123 }
|
|
};
|
|
|
|
Assert.True(AccountTelegramToolsService.IsMessageFromCurrentAccount(message, accountUserId: 123));
|
|
}
|
|
|
|
[Fact]
|
|
public void 最新消息作者识别会拒绝其他账号消息()
|
|
{
|
|
var message = new Message
|
|
{
|
|
from_id = new PeerUser { user_id = 456 }
|
|
};
|
|
|
|
Assert.False(AccountTelegramToolsService.IsMessageFromCurrentAccount(message, accountUserId: 123));
|
|
}
|
|
}
|