1
0
mirror of https://github.com/InsanusMokrassar/TelegramBotAPI.git synced 2026-04-07 18:42:29 +00:00

add support of managed bots creation link

This commit is contained in:
2026-04-06 16:32:26 +06:00
parent 4b5aad2b85
commit a5446b5adb
5 changed files with 153 additions and 12 deletions

View File

@@ -3346,6 +3346,14 @@ public final class dev/inmo/tgbotapi/extensions/utils/formatting/LinksFormatting
public static final fun makeUsernameStartattachLink (Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
public static synthetic fun makeUsernameStartattachLink$default (Ljava/lang/String;Ljava/lang/String;ILjava/lang/Object;)Ljava/lang/String;
public static final fun makeUsernameStartattachPrefix (Ljava/lang/String;)Ljava/lang/String;
public static final fun managedBotCreationLink (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
public static synthetic fun managedBotCreationLink$default (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILjava/lang/Object;)Ljava/lang/String;
public static final fun managedBotCreationLink-B8si7ts (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
public static synthetic fun managedBotCreationLink-B8si7ts$default (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILjava/lang/Object;)Ljava/lang/String;
public static final fun managedBotCreationLink-hj--HSE (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
public static synthetic fun managedBotCreationLink-hj--HSE$default (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILjava/lang/Object;)Ljava/lang/String;
public static final fun managedBotCreationLink-rmazcNg (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
public static synthetic fun managedBotCreationLink-rmazcNg$default (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILjava/lang/Object;)Ljava/lang/String;
}
public final class dev/inmo/tgbotapi/extensions/utils/formatting/ResendingTextFormattingKt {

View File

@@ -114,6 +114,22 @@ val Chat.chatLink: String?
return null
}
fun managedBotCreationLink(managerBotUsername: String, suggestedUsername: String, suggestedName: String? = null): String {
return "${makeUsernameLink(managedBotNewBotUsername)}/$managerBotUsername/$suggestedUsername${suggestedName ?.let { "?$nameField=${it.encodeURLQueryComponent()}" } ?: ""}"
}
fun managedBotCreationLink(managerBotUsername: String, suggestedUsername: Username, suggestedName: String? = null): String {
return managedBotCreationLink(managerBotUsername, suggestedUsername.withoutAt, suggestedName)
}
fun managedBotCreationLink(managerBotUsername: Username, suggestedUsername: String, suggestedName: String? = null): String {
return managedBotCreationLink(managerBotUsername.withoutAt, suggestedUsername, suggestedName)
}
fun managedBotCreationLink(managerBotUsername: Username, suggestedUsername: Username, suggestedName: String? = null): String {
return managedBotCreationLink(managerBotUsername.withoutAt, suggestedUsername.withoutAt, suggestedName)
}
private const val stickerSetAddingLinkPrefix = "$internalLinkBeginning/addstickers"
val StickerSetName.stickerSetLink

View File

@@ -0,0 +1,115 @@
import dev.inmo.tgbotapi.extensions.utils.formatting.managedBotCreationLink
import dev.inmo.tgbotapi.types.Username
import io.ktor.http.encodeURLQueryComponent
import kotlin.test.Test
import kotlin.test.assertEquals
class LinksFormattingKtTest {
/**
* Tests for the `managedBotCreationLink` function.
* These tests verify that the function generates Telegram bot creation links correctly for various inputs.
*/
@Test
fun testManagedBotCreationLinkWithStringsWithoutSuggestedName() {
// Arrange
val managerBotUsername = "managerBot"
val suggestedUsername = "testBot"
// Act
val result = managedBotCreationLink(managerBotUsername, suggestedUsername)
// Assert
val expected = "https://t.me/newbot/managerBot/testBot"
assertEquals(expected, result)
}
@Test
fun testManagedBotCreationLinkWithStringsWithSuggestedName() {
// Arrange
val managerBotUsername = "managerBot"
val suggestedUsername = "testBot"
val suggestedName = "Test Bot".encodeURLQueryComponent()
// Act
val result = managedBotCreationLink(managerBotUsername, suggestedUsername, suggestedName)
// Assert
val expected = "https://t.me/newbot/managerBot/testBot?name=${suggestedName.encodeURLQueryComponent()}"
assertEquals(expected, result)
}
@Test
fun testManagedBotCreationLinkWithUsernamesWithoutSuggestedName() {
// Arrange
val managerBotUsername = Username("@managerBot")
val suggestedUsername = Username("@testBot")
// Act
val result = managedBotCreationLink(managerBotUsername, suggestedUsername)
// Assert
val expected = "https://t.me/newbot/managerBot/testBot"
assertEquals(expected, result)
}
@Test
fun testManagedBotCreationLinkWithUsernamesWithSuggestedName() {
// Arrange
val managerBotUsername = Username("@managerBot")
val suggestedUsername = Username("@testBot")
val suggestedName = "Test Bot"
// Act
val result = managedBotCreationLink(managerBotUsername, suggestedUsername, suggestedName)
// Assert
val expected = "https://t.me/newbot/managerBot/testBot?name=${suggestedName.encodeURLQueryComponent()}"
assertEquals(expected, result)
}
@Test
fun testManagedBotCreationLinkMixedStringAndUsernameWithoutSuggestedName() {
// Arrange
val managerBotUsername = "managerBot"
val suggestedUsername = Username("@testBot")
// Act
val result = managedBotCreationLink(managerBotUsername, suggestedUsername)
// Assert
val expected = "https://t.me/newbot/managerBot/testBot"
assertEquals(expected, result)
}
@Test
fun testManagedBotCreationLinkMixedUsernameAndStringWithSuggestedName() {
// Arrange
val managerBotUsername = Username("@managerBot")
val suggestedUsername = "testBot"
val suggestedName = "Test Bot"
// Act
val result = managedBotCreationLink(managerBotUsername, suggestedUsername, suggestedName)
// Assert
val expected = "https://t.me/newbot/managerBot/testBot?name=${suggestedName.encodeURLQueryComponent()}"
assertEquals(expected, result)
}
@Test
fun testManagedBotCreationLinkWithSpecialCharactersInSuggestedName() {
// Arrange
val managerBotUsername = "managerBot"
val suggestedUsername = "testBot"
val suggestedName = "Test Bot & Co."
// Act
val result = managedBotCreationLink(managerBotUsername, suggestedUsername, suggestedName)
// Assert
val expected = "https://t.me/newbot/managerBot/testBot?name=${suggestedName.encodeURLQueryComponent()}"
assertEquals(expected, result)
}
}