Summary
Add support for the `selector syntax'.
Motivation
By using this syntax, users will be able to locate someone without having an exact ID or UID.
Description
A selector syntax follows this scheme
.<PLATFORM_ID/any>[.g[.<SELECT PATTERN>.c] or [.<SELECT PATTERN>.m]][.n].[e]<SELECT PATTERN>.
Parts enclosed in <, > are MUST, while [, ] are optional.
[e]: use regex mode (off by default)
[.g]: the target is a ChatGroup.
[.c]: the target is a ChatChannel of the given ChatGroup. Use the default channel if not specified
[.m]: the target is an IMemberof the givenChatGroup. Incompatible with [.c]`.
[.n]: select targets by name.
Example:
- Select a member(id=1919810) of group 114514:
.any.g.114514.m.1919810
- Select a contact whose name starts with A:
.any.n.e"^A.+" 3.
- Select a group (id=114514) from Telegram:
.telegram.g.114514.
- Select a group whose name starts with A:
.any.g.n.e"^A.+".
A new session will be created if multiple selections are found. The user is prompted to select one of them.
This behaviour is disabled by default to avoid privacy concerns.