🤖 A wrapper for the Telegram Bot API written in Kotlin

Overview

Kotlin Telegram Bot

Build Status Release ktlint

A wrapper for the Telegram Bot API written in Kotlin.

Usage

Creating a bot instance is really simple:

fun main() {
    val bot = bot {
        token = "YOUR_API_KEY"
    }
}

Now lets poll telegram API and route all text updates:

fun main() {
    val bot = bot {
        token = "YOUR_API_KEY"
        dispatch {
            text {
                bot.sendMessage(ChatId.fromId(message.chat.id), text = text)
            }
        }
    }
    bot.startPolling()
}

Want to route commands?:

fun main() {
    val bot = bot {
        token = "YOUR_API_KEY"
        dispatch {
            command("start") {
                val result = bot.sendMessage(chatId = ChatId.fromId(message.chat.id), text = "Hi there!")
                result.fold({
                    // do something here with the response
                },{
                    // do something with the error 
                })
            }
        }
    }
    bot.startPolling()
}

Examples

Take a look at the examples folder.

There are several samples:

  • A simple echo bot
  • A more complex sample with commands, filter, reply markup keyboard and more
  • A sample getting updates through Telegram's webhook using a Netty server
  • An example bot sending polls and listening to poll answers

Download

  • Add the JitPack repository to your root build.gradle file:
repositories {
    maven { url "https://jitpack.io" }
}
  • Add the code to your module's build.gradle file:
dependencies {
    implementation 'io.github.kotlin-telegram-bot.kotlin-telegram-bot:telegram:x.y.z'
}

Detailed documentation

  1. Getting updates
  2. Polls
  3. Dice
  4. Logging
  5. Games

Contributing

  1. Fork and clone the repo
  2. Run ./gradlew ktlintFormat
  3. Run ./gradlew build to see if tests, ktlint and abi checks pass.
  4. Commit and push your changes
  5. Submit a pull request to get your changes reviewed

Thanks

  • Big part of the architecture of this project is inspired by python-telegram-bot, check it out!
  • Some awesome kotlin ninja techniques were grabbed from Fuel.

License

Kotlin Telegram Bot is under the Apache 2.0 license. See the LICENSE for more information.

Comments
  • Commands are not received after about 1 hour of running my telegram bot

    Commands are not received after about 1 hour of running my telegram bot

    Expected behavior Commands that the user sends are received reliably in the telegram bot

    Actual behavior After about 1 hour of run time of my telegram bot newly sent commands dont "arrive" in the application. In the time from start up until about 1 hour the commands "arrive" reliably. After a restart of my telegram bot the stuck commands are processed directly at startup. Also, the bot sends a message like every 10 seconds, which works fine. I noticed this behaviour for about 5 days now and I did not update anything.

    To Reproduce Hard to reproduce. Currently I am running the application directly with IntelliJ.

    Screenshots/Traceback No exceptions occur / are visible. Is there a way to see a log of my telegram bot from the Telegram's perspective?

    bug 
    opened by moobid 18
  • Add missing `sendVoice` parameters

    Add missing `sendVoice` parameters

    According to telegram bot api for sendVoice, it also accepts 3 parameters not presented in current api: caption, parseMode and captionEntities.

    P.S> not sure how I suppose to write tests for it, although I tested it manually.

    opened by Flame239 17
  • editMessageMedia does not function

    editMessageMedia does not function

    Expected behavior editMessageMedia edits the media of a message. The user sees this change immediately.

    Actual behavior Nothing happens.

    To Reproduce Call the method linked above and provide a bot-unique file ID.

    Screenshots/Traceback

    bot.editMessageMedia(
                -447268747,
                4870,
                media = InputMediaPhoto(TelegramFile.ByFileId(
                    "AgACAgIAAxkBAAITB2EL_xbqiVhVbSBPTKpw2HnE3P0eAAKItTEbXEJhSJ7zGYnW9n3UAQADAgADbQADIAQ")),
                replyMarkup = null)
    

    Possible solutions Perhaps this is related to the JSON serialisation of the TelegramFile.ByFileId object? [reference]

    Additional context Using the same parameters in a direct POST request to the API endpoint, the message gets edited correctly:

    https://api.telegram.org/bot<token>/editMessageMedia?media={%22type%22:%22photo%22,%22media%22:%22AgACAgIAAxkBAAITB2EL_xbqiVhVbSBPTKpw2HnE3P0eAAKItTEbXEJhSJ7zGYnW9n3UAQADAgADbQADIAQ%22}&message_id=4870&chat_id=-447268747
    

    This validates message ID, chat ID, and file ID.

    bug 
    opened by zhtaihao 13
  • Handlers to functions with receiver

    Handlers to functions with receiver

    This is finally ready.

    I have migrated all the handlers available in the library to now use functions with receivers. In this way it'll be possible to access to all the data correspondent to the updates in the scope of the handler function without the need of explicitly indicating these data parameters in the handler lambda function.

    There is one commit per migrated handler (all the commits that reference the issue https://github.com/kotlin-telegram-bot/kotlin-telegram-bot/issues/96)

    Also, there are some clean up commits:

    • https://github.com/kotlin-telegram-bot/kotlin-telegram-bot/pull/103/commits/e1978f8e0a343323878028a6bea516a582311fb2
    • https://github.com/kotlin-telegram-bot/kotlin-telegram-bot/pull/103/commits/8d7d45df9b2760b8de799f291efe3cf20db1b069
    • https://github.com/kotlin-telegram-bot/kotlin-telegram-bot/pull/103/commits/c9a0b5f6e5ec34db130863ba620c11072270b702

    If these changes look good to you, we can finally proceed with this issue https://github.com/kotlin-telegram-bot/kotlin-telegram-bot/issues/93

    opened by vjgarciag96 11
  • Getting into a loop

    Getting into a loop

    Expected behavior there is a message block inside the callbackQuery(A). inside that message block we ask yes or no question with InlineKeyboardButton. for example, if the user chooses yes, it will go to callbackQuery(B). but if chooses no, callbackQuery(A) will be called again.

    Actual behavior The problem starts when the user chooses no for the first time. after going throw all again, if he chooses no again, InlineKeyboardButton will popup twice!

    To Reproduce

    callbackQuery("A") {
        val chatId = callbackQuery.message?.chat?.id ?: return@callbackQuery
        bot.sendMessage(
            chatId = chatId,
            text = """some input""",
        )
    
        message {
            val inlineKeyboardMarkup = InlineKeyboardMarkup.create(
                listOf(
                    InlineKeyboardButton.CallbackData(text = "no", callbackData = "A"),
                    InlineKeyboardButton.CallbackData(text = "yes", callbackData = "B"),
                ),
            )
            bot.sendMessage(
                chatId = message.chat.id,
                text = """
                your choice
            """.trimIndent(),
                replyMarkup = inlineKeyboardMarkup
            )
        }
    }
    

    Additional context I think the possibility of my code being wrong is high but there is no place to ask my question, so I asked here so maybe, maybe, there is a bug.

    bug 
    opened by sinadarvi 10
  • Changed addHandler() and removeHandler()

    Changed addHandler() and removeHandler()

    Changed HandlersDsl.kt to account for changes in addHandler

    You can now add handlers in dispatcher specifying their names, every handler is added in a mutableMap with its name as a key. If no name is specified then it is either defaulted to null or to main parameter of handler

    opened by lifestreamy 9
  • 6.0.0 version and breaking changes

    6.0.0 version and breaking changes

    Since the last version at least 2 breaking changes have been introduced: #82 and #91 (not merged at the moment but approved).

    Maybe it's time to create a major version with big changes and release all breaking changes at the same time.

    I opened this issue to plan the next release and to ask if there are any other changes you have always wanted to introduce but were afraid because of breaking too many things.

    discussion 
    opened by seik 8
  • Handlers to functions with receiver without proxy

    Handlers to functions with receiver without proxy

    Hello. I modified vjgarciag96 branch handlers-to-functions-with-receiver. Handlers to functions with receiver #96 can be implemented a little easier, without a proxy. Please take a look. Don't kick me too hard, this is my first experience on github and writing in Kotlin.

    P.S.: I didn't even need to add HandlerEnvironment, but I need it for the next PR(chain of steps). Thanks.

    opened by reopold 6
  • Bot sending duplicates

    Bot sending duplicates

    Hello everyone! I'm a newcomer for Telegram bot programming and I'm not really sure if this is a bug or it's me doing something wrong. If that's the case forgive me!

    I'm trying to create a bot which simply returns data from a json file, filtering and manipulating it. Each json has a tag called "level", so I wrote a "search by level" callback query. Once is fired, this callback sends a message to ask the user to input the level (from 0 to 9). Then the bot simply reads the json and filters the output to send as a message.

    The problem is that it sends duplicates while the callback is fired more than once. If you fire it 2 times, it will send 2 messages and the third time it will send 3 messages, and so on.

    Here's the code:

     val holder = deserializeSpells("/home/nicola/Desktop/formattedFile.json")
     val bot = bot {
            dispatch {
                command("start") {
                    bot.sendMessage(ChatId.fromId(update.message!!.chat.id),"<b><i>Benvenuto in WizardBook!</i></b>", parseMode = ParseMode.HTML)
                    bot.sendMessage(ChatId.fromId(update.message!!.chat.id),"Ti aiuterò a trovare gli incantesimi!")
                    val replyMarkup = InlineKeyboardMarkup.create(
                        listOf(
                            InlineKeyboardButton.CallbackData("Cerca per livello","bylevel"),
                            InlineKeyboardButton.CallbackData("Cerca per classe","byclass")),
                        listOf(
                            InlineKeyboardButton.CallbackData("Cerca per scuola","byschool"),
                            InlineKeyboardButton.CallbackData("Cerca per nome (o un pezzo)","byname")),
                        listOf(InlineKeyboardButton.CallbackData("Cerca per nome (preciso)","byreference")),
                        listOf(InlineKeyboardButton.CallbackData("La magia del giorno!","byday")),
                        listOf(InlineKeyboardButton.CallbackData("Contatti","bycontacts"))
                    )
                    bot.sendMessage(ChatId.fromId(message.chat.id),"Scegli il metodo di ricerca", replyMarkup = replyMarkup)
                }
    
                callbackQuery ("bylevel") {
                    val chatId = update.callbackQuery?.message!!.chat.id
                    bot.sendMessage(ChatId.fromId(chatId),"Che livello stai cercando? <u>(Da 0 a 9)</u>", parseMode = ParseMode.HTML)
                    text {
                        var out :String = ""
                        holder.forEach {
                            if (it.level == text) out+= "\n${it.name}\n<i><u>Lvl. ${it.level} Classi ${it.combat}</u></i>"
                        }
                        bot.sendMessage(ChatId.fromId(chatId),out, parseMode = ParseMode.HTML)
                    }
                }
            }
        }
        bot.startPolling()
    

    Maybe it's me not understanding how to properly handle updates? Thanks a lot!

    bug 
    opened by NicolaM94 5
  • Add Filters

    Add Filters

    Adds Filters, see sample about how it works. It's more like a proposal, there might be better ways to implement this and use cases I forgot to consider.

    A few things to note:

    • and doesn't take precedence over or, ~maybe we should wait for https://github.com/JetBrains/kotlin/pull/1769 instead of this~
    • an other option is to use + and *
    • some builtin filters could be implemented later, like message contains url, etc.
    opened by hangyas 5
  • Chat id parameter refactoring

    Chat id parameter refactoring

    As discussed in https://github.com/kotlin-telegram-bot/kotlin-telegram-bot/issues/128, here I refactored all chat_id parameters to support numeric ids as well as channel usernames.

    opened by Flame239 4
  • hi, may you create a list from all the commands in this library?

    hi, may you create a list from all the commands in this library?

    Is your feature request related to a problem? Please describe.

    Describe the solution you'd like

    Describe alternatives you've considered

    Implementation ideas

    Additional context

    enhancement 
    opened by erfanlove 0
  • Lack of web_app_data in message

    Lack of web_app_data in message

    Expected behavior Message class contains webAppData field

    Actual behavior Message class doesn't contain webAppData field

    To Reproduce Create a web app and try to send data back to the bot via sendData js method

    bug 
    opened by morfeusys 0
  • Okhttp version is too old.

    Okhttp version is too old.

    Trying to print Log:

    val bot = bot {
            ...
            logLevel = LogLevel.All()
        }
    

    But:

    Exception in thread "pool-1-thread-2" java.lang.NoSuchMethodError: 'void okhttp3.internal.platform.Platform.log(int, java.lang.String, java.lang.Throwable)'
    	at okhttp3.logging.HttpLoggingInterceptor$Logger$1.log(HttpLoggingInterceptor.java:111)
    	at okhttp3.logging.HttpLoggingInterceptor.intercept(HttpLoggingInterceptor.java:159)
    	at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:109)
    	at okhttp3.internal.connection.RealCall.getResponseWithInterceptorChain$okhttp(RealCall.kt:201)
    	at okhttp3.internal.connection.RealCall.execute(RealCall.kt:154)
    	at retrofit2.OkHttpCall.execute(OkHttpCall.java:204)
    	at com.github.kotlintelegrambot.network.ApiRequestSender.send(ApiRequestSender.kt:7)
    	at com.github.kotlintelegrambot.network.ApiClient.runApiOperation(ApiClient.kt:1329)
    	at com.github.kotlintelegrambot.network.ApiClient.getUpdates(ApiClient.kt:120)
    	at com.github.kotlintelegrambot.updater.Updater$startPolling$1.invoke(Updater.kt:21)
    	at com.github.kotlintelegrambot.updater.Updater$startPolling$1.invoke(Updater.kt:20)
    	at com.github.kotlintelegrambot.updater.ExecutorLooper.runLoop(Looper.kt:28)
    	at com.github.kotlintelegrambot.updater.ExecutorLooper.loop$lambda-0(Looper.kt:23)
    	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
    	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
    	at java.base/java.lang.Thread.run(Thread.java:833)
    

    Then I found that kotlin-telegram-bot depends on okhttp 3.14.9 image

    And ktor depends on 4.9.3....

    bug 
    opened by TigerBeanst 0
  • Handlers are indefinitely added to commandHandlers (compared by hashes, not values)

    Handlers are indefinitely added to commandHandlers (compared by hashes, not values)

    Expected behavior New handlers are not added with addhandler() if they already exist in the same scope

    Actual behavior New handlers with the same values are added indefinitely

    To Reproduce

    Dispatcher

    import com.github.kotlintelegrambot.bot
    import com.github.kotlintelegrambot.dispatch
    import com.github.kotlintelegrambot.logging.LogLevel
    
    fun main() {
        val bot = bot {
            token = "Your Token"
            timeout = 30
            logLevel = LogLevel.None
            dispatch {          
                command("command1") {
                }
                command("command1") {
                }   
        }
        bot.startPolling()
    }
    

    Dispatcher.addHandler()

    fun addHandler(handler: Handler) {
            commandHandlers.forEach {
                if (it == handler) {
                    println("Handler exists already")
                    return
                }
            }
            commandHandlers.add(handler)
            println("Added new handler $handler")
        }
    

    Screenshots/Traceback image

    As you can see here handlers are compared by their hashes, that always differ, and not by their parameters Thus a new handler is always added regardless of whether the same is already present in commands

    Possible solutions Override an equals method for each Handler in telegram/src/main/kotlin/com/github/kotlintelegrambot/dispatcher/handlers

    Additional context I have posted an issue about Dispatcher.removeHandler() here, If you solve the latter, the former can be skipped https://github.com/kotlin-telegram-bot/kotlin-telegram-bot/issues/262

    bug 
    opened by lifestreamy 0
Releases(6.0.7)
  • 6.0.7(May 10, 2022)

    What's Changed

    • getMe to TelegramBotResult by @vjgarciag96 in https://github.com/kotlin-telegram-bot/kotlin-telegram-bot/pull/228
    • sendMessage to TelegramBotResult by @vjgarciag96 in https://github.com/kotlin-telegram-bot/kotlin-telegram-bot/pull/229
    • forwardMessage to TelegramBotResult by @vjgarciag96 in https://github.com/kotlin-telegram-bot/kotlin-telegram-bot/pull/230
    • Rename kickChatMember to banChatMember by @vjgarciag96 in https://github.com/kotlin-telegram-bot/kotlin-telegram-bot/pull/231
    • Rename getChatMembersCount to getChatMemberCount by @vjgarciag96 in https://github.com/kotlin-telegram-bot/kotlin-telegram-bot/pull/232
    • Add chatType to InlineQuery by @vjgarciag96 in https://github.com/kotlin-telegram-bot/kotlin-telegram-bot/pull/233
    • Support 'web app' payload for InlineKeyboardButton by @nyavro in https://github.com/kotlin-telegram-bot/kotlin-telegram-bot/pull/243

    New Contributors

    • @nyavro made their first contribution in https://github.com/kotlin-telegram-bot/kotlin-telegram-bot/pull/243

    Full Changelog: https://github.com/kotlin-telegram-bot/kotlin-telegram-bot/compare/6.0.6...6.0.7

    Source code(tar.gz)
    Source code(zip)
  • 6.0.6(Oct 10, 2021)

    What's Changed

    • Adds allow_sending_withour_reply to sendMediaGroup - Issue #188 by @LeGorge in https://github.com/kotlin-telegram-bot/kotlin-telegram-bot/pull/202
    • Added ip_address parameter by @hamorillo in https://github.com/kotlin-telegram-bot/kotlin-telegram-bot/pull/206
    • Adds disable_content_type_detection to sendDocument and InputMediaDoc… by @LeGorge in https://github.com/kotlin-telegram-bot/kotlin-telegram-bot/pull/203
    • Update to Kotlin v1.5.31 by @vjgarciag96 in https://github.com/kotlin-telegram-bot/kotlin-telegram-bot/pull/220
    • JSON serialization of InputMedia Types by @joshuastorch in https://github.com/kotlin-telegram-bot/kotlin-telegram-bot/pull/214
    • Unify sending files API by @naftalmm in https://github.com/kotlin-telegram-bot/kotlin-telegram-bot/pull/210
    • Add missing parseMode parameter for editMessageCaption by @joshuastorch in https://github.com/kotlin-telegram-bot/kotlin-telegram-bot/pull/222
    • Bump library version to 6.0.6 by @vjgarciag96 in https://github.com/kotlin-telegram-bot/kotlin-telegram-bot/pull/225

    New Contributors

    • @hamorillo made their first contribution in https://github.com/kotlin-telegram-bot/kotlin-telegram-bot/pull/206
    • @joshuastorch made their first contribution in https://github.com/kotlin-telegram-bot/kotlin-telegram-bot/pull/214
    • @naftalmm made their first contribution in https://github.com/kotlin-telegram-bot/kotlin-telegram-bot/pull/210

    Full Changelog: https://github.com/kotlin-telegram-bot/kotlin-telegram-bot/compare/6.0.5...6.0.6

    Source code(tar.gz)
    Source code(zip)
  • 6.0.5(Aug 14, 2021)

    Improvements:

    • sendInvoice, deleteMessage, sendPoll, answerCallbackQuery, deleteChatSticker, setChatStickerSet and getChatMember migrate to TelegramBotResult

    Fixes:

    • Potential fix for an issue with the bot not receiving updates after a certain amount of time running.

    Features:

    • Added onlyIfBanned field to unbanChatMember operation.
    • Added logout operation.
    • Added allowSendingWithoutReply parameters to several operations.
    • Added sendGame operation.
    • Added stopPoll operation.
    Source code(tar.gz)
    Source code(zip)
  • 6.0.4(Feb 22, 2021)

    Improvements:

    • Extended the TelegramBotResult type. Added isSuccess, isError, getOrDefault, get and fold APIs.
    • setChatAdministratorCustomTitle method migrated to TelegramBotResult.
    • sendDice method migrated to TelegramBotResult.
    • setMyCommands method migrated to TelegramBotResult.
    • getMyCommands method migrated to TelegramBotResult.
    • answerInlineQuery method migrated to TelegramBotResult.
    • answerPrecheckoutQuery method migrated to TelegramBotResult.
    • answerShippingQuery method migrated to TelegramBotResult.

    Fixes:

    • canSendOtherMessages field serialization in ChatPermissions class.
    • Catch all throwable in handlers' execution.

    Features:

    • Support for sending audio and document albums.
    • bio, linkedChatId and location fields added to Chat class.
    • filename field added to Audio and Video classes.
    Source code(tar.gz)
    Source code(zip)
  • 6.0.3(Feb 14, 2021)

    Fixes:

    • Use a Long for the date field in Message class.

    Features:

    • Bowling emoji for sendDice method.
    • copyMessage method.
    • messageId parameter added to unpinChatMessage method.
    • unpinAllChatMessages method.
    • senderChat and authorSignature fields added to Message class.
    • isAnonymous added to promoteChatMember method and ChatMember class.
    • ChatId class to represent a chat id or a channel usernames for api methods.
    Source code(tar.gz)
    Source code(zip)
  • 6.0.2(Jan 23, 2021)

    Fixes:

    • Add missing parameters to the sendVoice operation https://github.com/kotlin-telegram-bot/kotlin-telegram-bot/pull/137
    • Changes to make execution ordering of updates handlers consistent across different updates https://github.com/kotlin-telegram-bot/kotlin-telegram-bot/pull/142

    Features:

    • Updates are now consumable across update handlers execution https://github.com/kotlin-telegram-bot/kotlin-telegram-bot/pull/142
    Source code(tar.gz)
    Source code(zip)
  • 6.0.1(Dec 6, 2020)

  • 6.0.0(Nov 8, 2020)

    This release mainly consists of the refactor of updates handlers to convert them in functions with receivers and bring type safety to them, improvements in the library logging to enable customisation of logging for library users, the update to Kotlin 1.4.10, general improvements and bug fixing.

    Features

    • Add customTitle and canSendPolls fields to ChatMember.
    • Support latest poll features.
    • Add handler for poll answer updates.
    • Add handler for new chat members.
    • Add sendDice operation.
    • Add dice field to Message.
    • Add can_join_groups, can_read_all_group_messages and supports_inline_queries fields to User.
    • Support for MarkdownV2 parse mode.
    • Add via_bot field to Message.
    • Support video thumbnails for inline GIF and MPEG4 animations.
    • Support all the new random dice animations (basketball, football and slot machine).
    • Support file unique ids.
    • Add slow_mode_delay field to Chat model.
    • Add setChatAdministratorCustomTitle operation.
    • Add a message handler without filter.
    • Improve library logging.
    • Add CachedPhoto inline query result.
    • Add thumb field to StickerSet.
    • Add media_group_id field to Message.
    • Update Kotlin version to 1.4.1.
    • Support to send text messages by channel username.
    • Handlers to functions with receivers.
    • Better types for InlineKeyboardButton.

    Bug fixes

    • Remove ReplyMarkup interface from InlineKeyboardButton.
    • Rename parameter audio to videoNote at sendVideoNote.
    • Catch exceptions in handlers.
    • Fix IllegalArgumentException in getStickerSet method.
    • Fix sendChatAction method.
    • Fix chat permissions related API operations.
    • Fix abnormal error messages.
    • Fix deleteMessage operation.
    Source code(tar.gz)
    Source code(zip)
  • 5.0.0(May 2, 2020)

    Changelog

    There are several important changes and additions to the library in this release. The package name has been changed from me.ivmg.kotlin-telegram-bot to com.github.kotlintelegrambot. Also, support for webhooks to listen updates has been added to the library.

    Features

    • Support for webhooks to receive updates #52

    Enhancements

    • Fix sendMediaGroup operation #60
    • Change package name to com.github.kotlintelegrambot #58
    • Format code fragments #59
    • Update Kotlin version #57
    Source code(tar.gz)
    Source code(zip)
  • 4.6.0(Apr 12, 2020)

    Changelog

    The highlight for this update is the support for the new Telegram's bot API getMyCommands and setMyCommands methods.

    Features

    • Support for downloading files and sending documents from ByteArray #46 (@rundoom)
    • Add switch_inline_query_current_chat property to InlineKeyboardButton and replyMarkup to sendPhoto method #48 (@elihun)
    • Add 'getMyCommands' and 'setMyCommands' methods (new Telegram's bot API 4.7 methods) #51 (@vicmosin)

    Enhancements

    • Update okhttp's logging interceptor library version to match retrofit's okhttp version #50 (@red-avtovo)
    Source code(tar.gz)
    Source code(zip)
  • 4.5.0(Nov 17, 2019)

    Changelog

    Highlights of this update are support for inline queries (https://core.telegram.org/bots/api#inline-mode) and the new method to stop bot polling.

    Features

    • Support for inline queries #42 (@vjgarciag96)

    Enchancements

    • Kotlin version bumped to 1.3.50
    • Added a method to stop bot polling #38 (@JcMinarro)
    • Created built-in dispatchers for files #34 (@vjgarciag96)
    • Markdown samples #41 (@vjgarciag96)
    Source code(tar.gz)
    Source code(zip)
  • 4.4.0(Sep 15, 2019)

    Changelog

    Highlights of this update are filters and support 4.4 API version.

    From now on version names will sync with telegram bot api versions.

    Enchancements

    • Bring bot on-par with Telegram Bot Api 4.4
    • Filters #36 (@vjgarciag96)
    • Allow sending voices in byte array #32 (@sssemil)
    • Added null defaults to help keep method calls cleaner 11f1218
    • Update ktlint configuration

    Fixes

    • Fix travis test builds by switching to openjdk
    Source code(tar.gz)
    Source code(zip)
  • 0.3.8(May 13, 2019)

  • 0.3.7(Mar 19, 2019)

  • 0.3.6(Jan 27, 2019)

  • 0.3.5(Oct 5, 2018)

  • 0.3.4(Sep 26, 2018)

    Changelog

    Enchancements

    • Sources added to Jitpack. This means now you can look at the internals while developing (How did I miss this? 🤦🏻‍♂️)
    Source code(tar.gz)
    Source code(zip)
  • 0.3.3(Sep 6, 2018)

  • 0.3.2(Jul 15, 2018)

    Changelog

    Fixes

    • Nullability and property name fixes #16 (@ClockVapor)

    Enchancements

    • Add command handler with arguments #15 (@hangyas)
    • Allow to explicitly specify telegram API url #17 (@NikolayManzhos)
    Source code(tar.gz)
    Source code(zip)
  • 0.3.1(Jul 2, 2018)

  • 0.3.0(Jul 1, 2018)

    Changelog

    • Payments API https://github.com/seik/kotlin-telegram-bot/commit/dfad5d14c65676b0d8dbe2223a55a5e3309873d5 - @SavinMike
    • Fixes to sendAudio method https://github.com/seik/kotlin-telegram-bot/commit/dfad5d14c65676b0d8dbe2223a55a5e3309873d5 - @SavinMike
    • Make some properties from entities nullable https://github.com/seik/kotlin-telegram-bot/pull/13 - @seik
    • Updates to gradle files and versions https://github.com/seik/kotlin-telegram-bot/pull/14 - @seik
    Source code(tar.gz)
    Source code(zip)
Owner
Kotlin Telegram Bot
Kotlin Telegram Bot
Simple telegram cat-captcha bot

kotlin-project-template Project Template for convenient project setup. Motivation Every time I create a new project, I do a lot of routine work, so th

Alex Sokol 15 Nov 16, 2022
Collects error messages ad sends them to Microsoft Teams or Telegram

ErrorCollector Logback-classic This projects aims to provide a convenient way to be notified if an error in on of your systems occurs. The appender wi

Mayope 4 Jan 11, 2022
Unofficial, FOSS-friendly fork of the original Telegram client for Android

or 1McafEgMvqAVujNLtcJumZHxp2UfaNByqs Telegram-FOSS Telegram is a messaging app with a focus on speed and security. It’s superfast, simple and free. T

null 2k Jan 1, 2023
A hybrid chat android application based on the features of Instagram and Whatsapp having UI just as Telegram.

A hybrid chat android application based on the features of Instagram and Whatsapp having UI just as Telegram.

Ratik Tiwari 1 May 22, 2022
Telegram client based on official Android sources

Telegram messenger for Android Telegram is a messaging app with a focus on speed and security. It’s superfast, simple and free. This repo contains the

Dmitry Kotov 12 Dec 25, 2022
A QQ bot based on Mirai.

Chii A QQ bot based on Mirai. 个人使用, 仅供娱乐. Building from Source $ git clone https://github.com/MaxXSoft/Chii.git $ cd Chii $ gradle run License Copyri

MaxXing 5 Dec 17, 2021
Discord bot for server join applications

Applications Bot This is a simple Discord bot that you can use for an applications system for your Discord server. It's expected to work as follows: A

Gareth Coles 1 Nov 1, 2021
A Chat-Bot Android Application

Sekobanashi_App A Chat-Bot Android Application. Features Sekobanashi is a chat-bot/assistant android application where the user can chat with one of t

Siddharth Singh 3 Nov 5, 2022
Simple chat box written in kotlin, requires a redis server

Chat Box A simple chat box written in kotlin which requires a redis server to be used. Features Command Support Online User storage in Redis Easy to u

GrowlyX 2 Jul 17, 2022
A chat app for Android written in Kotlin using MVVM.

Chat App Android About A chat app for Android written in Kotlin using MVVM. Features Authentication: Email and password Google Auth Reset Password Sen

Sreshtha Mehrotra 14 Jul 3, 2022
A chat app for Android written in Kotlin using MVVM.

Chat App Android About A chat app for Android written in Kotlin using MVVM. Features Authentication: Email and password Google Auth Reset Password Sen

Sreshtha Mehrotra 14 Jul 3, 2022
Messaging API: Connect to PostgreSQL and Kafka to obtain and manage cars inventory

Messaging-API In this simple API, we connect to PostgreSQL and Kafka to obtain a

Kevork 0 Feb 18, 2022
A simple video calling application uses Firebase database and WebRTC API that enables you Peer-to-Peer Full-HD video and audio connection.

A simple video calling application uses Firebase database and WebRTC API that enables you Peer-to-Peer Full-HD video and audio connection.

Indrajit Sahu 10 Sep 27, 2022
Android app to search for artists, albums or tracks and get a list of related songs using the iTunes Searcher API.

iTunes Searcher Android app to search for artists, albums or tracks and get a list of related songs using the iTunes Searcher API. Each song may be cl

Miguel Freitas 2 Oct 19, 2022
A mirai chatbot plugin based on OpenAI GPT-3 API

Mirai OpenAI GPT-3 ChatBot Plugin This is a Mirai ChatBot plugin based on OpenAI GPT-3 API. Installation Download the JAR file from https://github.com

std::_Rb_tree 33 Jan 31, 2023
👨‍💻👩‍💻 workshop 2021, Kotlin version

??‍?? ??‍?? workshop-2021-kotlin it's very welcome for everyone's join, even you're newbies or junior or senior let's mob programming ! ?? Records 202

Taiwan Backend Group 12 Oct 1, 2021
Biblioteca Kotlin com objetivo de facilitar a criação de aplicações de Chat e Chatbots voltadas a Twitch.

Twitch4K O Twitch4K é uma biblioteca Kotlin que tem como objetivo principal facilitar a criação de aplicações de Chat e Chatbots voltadas para a plata

Kotlinautas 2 Dec 3, 2022
This is a Bluetooth operational Chat-App developed using Kotlin which shows the list of available devices nearby and paired devices, upon clicking you can start chat

This is a Bluetooth operational Chat-App developed using Kotlin which shows the list of available devices nearby and paired devices, upon clicking you can start chat ... VOILA ???? It is still in its early stages of development and currently let user to one-time chat at a time. It is under heavy development ??

Shalu Ambasta 3 Jan 10, 2022
Shit Chat is a realtime chat application made with Kotlin.

Shit Chat Shit Chat is a realtime chat application made with Kotlin. Screeshots : Login UI Sign Up UI User List UI Chat UI Features Store Chat on Fire

Vishal Singh 2 Oct 26, 2022