tg_cli: treat strings as usernames.

This commit is contained in:
levlam 2021-02-20 22:01:12 +03:00
parent 16913bff03
commit 6bbc251cb5

View File

@ -454,12 +454,18 @@ class CliClient final : public Actor {
int64 as_chat_id(Slice str) const { int64 as_chat_id(Slice str) const {
str = trim(str); str = trim(str);
if (str == "me") {
return my_id_;
}
if (str[0] == '@') { if (str[0] == '@') {
auto it = username_to_user_id_.find(to_lower(str.substr(1))); str.remove_prefix(1);
}
if (is_alpha(str[0])) {
auto it = username_to_user_id_.find(to_lower(str));
if (it != username_to_user_id_.end()) { if (it != username_to_user_id_.end()) {
return it->second; return it->second;
} }
auto it2 = username_to_supergroup_id_.find(to_lower(str.substr(1))); auto it2 = username_to_supergroup_id_.find(to_lower(str));
if (it2 != username_to_supergroup_id_.end()) { if (it2 != username_to_supergroup_id_.end()) {
auto supergroup_id = it2->second; auto supergroup_id = it2->second;
return static_cast<int64>(-1000'000'000'000ll) - supergroup_id; return static_cast<int64>(-1000'000'000'000ll) - supergroup_id;
@ -467,9 +473,6 @@ class CliClient final : public Actor {
LOG(ERROR) << "Can't resolve " << str; LOG(ERROR) << "Can't resolve " << str;
return 0; return 0;
} }
if (str == "me") {
return my_id_;
}
return to_integer<int64>(str); return to_integer<int64>(str);
} }
@ -535,17 +538,20 @@ class CliClient final : public Actor {
int32 as_user_id(Slice str) const { int32 as_user_id(Slice str) const {
str = trim(str); str = trim(str);
if (str == "me") {
return my_id_;
}
if (str[0] == '@') { if (str[0] == '@') {
auto it = username_to_user_id_.find(to_lower(str.substr(1))); str.remove_prefix(1);
}
if (is_alpha(str[0])) {
auto it = username_to_user_id_.find(to_lower(str));
if (it != username_to_user_id_.end()) { if (it != username_to_user_id_.end()) {
return it->second; return it->second;
} }
LOG(ERROR) << "Can't find user " << str; LOG(ERROR) << "Can't find user " << str;
return 0; return 0;
} }
if (str == "me") {
return my_id_;
}
return to_integer<int32>(str); return to_integer<int32>(str);
} }
@ -565,7 +571,10 @@ class CliClient final : public Actor {
int32 as_supergroup_id(Slice str) { int32 as_supergroup_id(Slice str) {
str = trim(str); str = trim(str);
if (str[0] == '@') { if (str[0] == '@') {
return username_to_supergroup_id_[to_lower(str.substr(1))]; str.remove_prefix(1);
}
if (is_alpha(str[0])) {
return username_to_supergroup_id_[to_lower(str)];
} }
auto result = to_integer<int64>(str); auto result = to_integer<int64>(str);
int64 shift = static_cast<int64>(-1000000000000ll); int64 shift = static_cast<int64>(-1000000000000ll);