2
0
mirror of https://github.com/tdlib/telegram-bot-api synced 2025-08-21 17:37:48 +00:00

Compare commits

...

10 Commits

Author SHA1 Message Date
Erfan Mola
c4f9e0a68c
Merge e2c834103a2f0c648c22362f59dbfa043518e96b into 06e2e31aeaa9bdfc2b3e11bb3e4761241373b7cd 2024-08-15 21:45:00 +02:00
levlam
06e2e31aea Update version to 7.9. 2024-08-14 05:16:39 +03:00
levlam
961a19e1a0 Add method editChatSubscriptionInviteLink. 2024-08-14 00:29:32 +03:00
levlam
76e5ed31c0 Add method createChatSubscriptionInviteLink. 2024-08-14 00:26:20 +03:00
levlam
6478c25096 Support botTransactionPurposePaidMedia. 2024-08-13 16:00:42 +03:00
levlam
af5f55b206 Add subscription information to ChatInviteLink. 2024-08-13 15:46:37 +03:00
levlam
e171396b8a Support chatMemberStatusMember.member_until_date. 2024-08-13 15:28:48 +03:00
levlam
3c4656b539 Support paid reactions. 2024-08-13 15:24:19 +03:00
levlam
ffe39d4114 Update TDLib to 1.8.35. 2024-08-13 14:51:15 +03:00
Erfan Mola
e2c834103a
Added Multiple Core build support option
Added an option to chose multi core build by using clang's -j parameter
2022-12-30 13:53:00 +00:00
6 changed files with 92 additions and 13 deletions

View File

@ -6,7 +6,7 @@ if (POLICY CMP0065)
cmake_policy(SET CMP0065 NEW)
endif()
project(TelegramBotApi VERSION 7.8 LANGUAGES CXX)
project(TelegramBotApi VERSION 7.9 LANGUAGES CXX)
if (POLICY CMP0069)
option(TELEGRAM_BOT_API_ENABLE_LTO "Use \"ON\" to enable Link Time Optimization.")

View File

@ -75,7 +75,7 @@
a:hover {
text-decoration: underline;
}
select, button {
select, button, input {
border: 1px solid var(--color-select-border);
background-color: var(--background);
color: var(--color);
@ -266,6 +266,14 @@
<label><input type="checkbox" id="buildRootCheckbox" onchange="onOptionsChanged()"/>Build from root user (not recommended).</label>
</div>
<div id="buildMultiCoreDiv" class="hide">
<label><input type="checkbox" id="buildMultiCoreCheckbox" onchange="onOptionsChanged()"/>Build using mulitple cores<span class="hide" id="buildMultiCoreColon">:</span></label>
<div id="buildMultiCoreInputDiv" class="hide">
<input type="number" id="buildMultiCoreInput" onchange="onOptionsChanged()" placeholder="Cores number" min="1" style="text-align: center;"/>
</div>
</div>
<p></p>
</div>
@ -354,6 +362,7 @@ function onOptionsChanged() {
linux_distro = document.getElementById('linuxSelect').value;
}
document.getElementById('buildCommandsDiv').style.display = 'block';
document.getElementById('buildMultiCoreDiv').style.display = 'block';
var use_clang = os_freebsd || os_openbsd;
if (os_linux && linux_distro !== 'Alpine' && !linux_distro.includes('CentOS') && !linux_distro.includes('Fedora')) {
@ -686,6 +695,11 @@ function onOptionsChanged() {
commands.push('cd ../build');
}
let build_command = cmake + ' --build . --target install';
if (document.getElementById('buildMultiCoreCheckbox').checked && document.getElementById('buildMultiCoreInput').value.toString().length > 0 && !(isNaN(document.getElementById('buildMultiCoreInput').value))) {
build_command += ` -j ${ document.getElementById('buildMultiCoreInput').value }`;
}
if (use_msvc) {
if (!is_debug_build) {
commands.push(build_command + ' --config Release');
@ -704,6 +718,8 @@ function onOptionsChanged() {
if (install_dir !== '/usr/local') {
install_dir = 'telegram-bot-api';
}
document.getElementById('buildMultiCoreInputDiv').style.display = document.getElementById('buildMultiCoreCheckbox').checked ? 'block' : 'none';
document.getElementById('buildMultiCoreColon').style.display = document.getElementById('buildMultiCoreCheckbox').checked ? 'inline' : 'none';
commands.push((use_powershell ? 'dir ' : 'ls -l ') + install_dir + '/bin/telegram-bot-api*');
document.getElementById('buildCommands').innerHTML = '<ul><li>' + commands.join('</li><li>') + '</li></ul>';
document.getElementById('copyBuildCommandsButton').style.display = commands.includes('exit') ? 'none' : 'block';

2
td

@ -1 +1 @@
Subproject commit 1fa2a372a88c26369dcac2ce476166531df74a77
Subproject commit 8d08b34e22a08e58db8341839c4e18ee06c516c5

View File

@ -258,7 +258,9 @@ bool Client::init_methods() {
methods_.emplace("answerprecheckoutquery", &Client::process_answer_pre_checkout_query_query);
methods_.emplace("exportchatinvitelink", &Client::process_export_chat_invite_link_query);
methods_.emplace("createchatinvitelink", &Client::process_create_chat_invite_link_query);
methods_.emplace("createchatsubscriptioninvitelink", &Client::process_create_chat_subscription_invite_link_query);
methods_.emplace("editchatinvitelink", &Client::process_edit_chat_invite_link_query);
methods_.emplace("editchatsubscriptioninvitelink", &Client::process_edit_chat_subscription_invite_link_query);
methods_.emplace("revokechatinvitelink", &Client::process_revoke_chat_invite_link_query);
methods_.emplace("getbusinessconnection", &Client::process_get_business_connection_query);
methods_.emplace("getchat", &Client::process_get_chat_query);
@ -709,6 +711,9 @@ class Client::JsonReactionType final : public td::Jsonable {
object("custom_emoji_id",
td::to_string(static_cast<const td_api::reactionTypeCustomEmoji *>(reaction_type_)->custom_emoji_id_));
break;
case td_api::reactionTypePaid::ID:
object("type", "paid");
break;
default:
UNREACHABLE();
}
@ -884,6 +889,10 @@ class Client::JsonChatInviteLink final : public td::Jsonable {
if (chat_invite_link_->pending_join_request_count_ != 0) {
object("pending_join_request_count", chat_invite_link_->pending_join_request_count_);
}
if (chat_invite_link_->subscription_pricing_ != nullptr) {
object("subscription_period", chat_invite_link_->subscription_pricing_->period_);
object("subscription_price", chat_invite_link_->subscription_pricing_->star_count_);
}
object("creates_join_request", td::JsonBool(chat_invite_link_->creates_join_request_));
object("is_primary", td::JsonBool(chat_invite_link_->is_primary_));
object("is_revoked", td::JsonBool(chat_invite_link_->is_revoked_));
@ -3707,8 +3716,13 @@ class Client::JsonChatMember final : public td::Jsonable {
}
break;
}
case td_api::chatMemberStatusMember::ID:
case td_api::chatMemberStatusMember::ID: {
auto member = static_cast<const td_api::chatMemberStatusMember *>(member_->status_.get());
if (member->member_until_date_ > 0) {
object("until_date", member->member_until_date_);
}
break;
}
case td_api::chatMemberStatusRestricted::ID:
if (chat_type_ == Client::ChatType::Supergroup) {
auto restricted = static_cast<const td_api::chatMemberStatusRestricted *>(member_->status_.get());
@ -4089,13 +4103,30 @@ class Client::JsonStarTransactionPartner final : public td::Jsonable {
auto source_user = static_cast<const td_api::starTransactionPartnerBot *>(source_);
object("type", "user");
object("user", JsonUser(source_user->user_id_, client_));
if (!source_user->invoice_payload_.empty()) {
if (!td::check_utf8(source_user->invoice_payload_)) {
LOG(WARNING) << "Receive non-UTF-8 invoice payload";
object("invoice_payload", td::JsonRawString(source_user->invoice_payload_));
} else {
object("invoice_payload", source_user->invoice_payload_);
CHECK(source_user->purpose_ != nullptr);
switch (source_user->purpose_->get_id()) {
case td_api::botTransactionPurposeInvoicePayment::ID: {
auto purpose =
static_cast<const td_api::botTransactionPurposeInvoicePayment *>(source_user->purpose_.get());
if (!purpose->invoice_payload_.empty()) {
if (!td::check_utf8(purpose->invoice_payload_)) {
LOG(WARNING) << "Receive non-UTF-8 invoice payload";
object("invoice_payload", td::JsonRawString(purpose->invoice_payload_));
} else {
object("invoice_payload", purpose->invoice_payload_);
}
}
break;
}
case td_api::botTransactionPurposePaidMedia::ID: {
auto purpose = static_cast<const td_api::botTransactionPurposePaidMedia *>(source_user->purpose_.get());
object("paid_media", td::json_array(purpose->media_, [client = client_](auto &media) {
return JsonPaidMedia(media.get(), client);
}));
break;
}
default:
UNREACHABLE();
}
break;
}
@ -4106,6 +4137,7 @@ class Client::JsonStarTransactionPartner final : public td::Jsonable {
case td_api::starTransactionPartnerAppStore::ID:
case td_api::starTransactionPartnerGooglePlay::ID:
case td_api::starTransactionPartnerUser::ID:
case td_api::starTransactionPartnerBusiness::ID:
case td_api::starTransactionPartnerChannel::ID:
LOG(ERROR) << "Receive " << to_string(*source_);
object("type", "other");
@ -10978,8 +11010,8 @@ td::Status Client::process_create_invoice_link_query(PromisedQueryPtr &query) {
td::Status Client::process_get_star_transactions_query(PromisedQueryPtr &query) {
auto offset = get_integer_arg(query.get(), "offset", 0, 0);
auto limit = get_integer_arg(query.get(), "limit", 100, 1, 100);
send_request(make_object<td_api::getStarTransactions>(make_object<td_api::messageSenderUser>(my_id_), nullptr,
td::to_string(offset), limit),
send_request(make_object<td_api::getStarTransactions>(make_object<td_api::messageSenderUser>(my_id_), td::string(),
nullptr, td::to_string(offset), limit),
td::make_unique<TdOnGetStarTransactionsQueryCallback>(this, std::move(query)));
return td::Status::OK();
}
@ -11171,6 +11203,22 @@ td::Status Client::process_create_chat_invite_link_query(PromisedQueryPtr &query
return td::Status::OK();
}
td::Status Client::process_create_chat_subscription_invite_link_query(PromisedQueryPtr &query) {
auto chat_id = query->arg("chat_id");
auto name = query->arg("name");
auto subscription_period = get_integer_arg(query.get(), "subscription_period", 0, 0, 1000000000);
auto subscription_price = get_integer_arg(query.get(), "subscription_price", 0, 0, 1000000);
check_chat(chat_id, AccessRights::Write, std::move(query),
[this, name = name.str(), subscription_period, subscription_price](int64 chat_id, PromisedQueryPtr query) {
send_request(make_object<td_api::createChatSubscriptionInviteLink>(
chat_id, name,
make_object<td_api::starSubscriptionPricing>(subscription_period, subscription_price)),
td::make_unique<TdOnGetChatInviteLinkCallback>(this, std::move(query)));
});
return td::Status::OK();
}
td::Status Client::process_edit_chat_invite_link_query(PromisedQueryPtr &query) {
auto chat_id = query->arg("chat_id");
auto invite_link = query->arg("invite_link");
@ -11189,6 +11237,19 @@ td::Status Client::process_edit_chat_invite_link_query(PromisedQueryPtr &query)
return td::Status::OK();
}
td::Status Client::process_edit_chat_subscription_invite_link_query(PromisedQueryPtr &query) {
auto chat_id = query->arg("chat_id");
auto invite_link = query->arg("invite_link");
auto name = query->arg("name");
check_chat(chat_id, AccessRights::Write, std::move(query),
[this, invite_link = invite_link.str(), name = name.str()](int64 chat_id, PromisedQueryPtr query) {
send_request(make_object<td_api::editChatSubscriptionInviteLink>(chat_id, invite_link, name),
td::make_unique<TdOnGetChatInviteLinkCallback>(this, std::move(query)));
});
return td::Status::OK();
}
td::Status Client::process_revoke_chat_invite_link_query(PromisedQueryPtr &query) {
auto chat_id = query->arg("chat_id");
auto invite_link = query->arg("invite_link");

View File

@ -683,7 +683,9 @@ class Client final : public WebhookActor::Callback {
td::Status process_answer_pre_checkout_query_query(PromisedQueryPtr &query);
td::Status process_export_chat_invite_link_query(PromisedQueryPtr &query);
td::Status process_create_chat_invite_link_query(PromisedQueryPtr &query);
td::Status process_create_chat_subscription_invite_link_query(PromisedQueryPtr &query);
td::Status process_edit_chat_invite_link_query(PromisedQueryPtr &query);
td::Status process_edit_chat_subscription_invite_link_query(PromisedQueryPtr &query);
td::Status process_revoke_chat_invite_link_query(PromisedQueryPtr &query);
td::Status process_get_business_connection_query(PromisedQueryPtr &query);
td::Status process_get_chat_query(PromisedQueryPtr &query);

View File

@ -165,7 +165,7 @@ int main(int argc, char *argv[]) {
auto start_time = td::Time::now();
auto shared_data = std::make_shared<SharedData>();
auto parameters = std::make_unique<ClientParameters>();
parameters->version_ = "7.8";
parameters->version_ = "7.9";
parameters->shared_data_ = shared_data;
parameters->start_time_ = start_time;
auto net_query_stats = td::create_net_query_stats();