I will do my best to keep this updated with changes as they happen.
- Added full support for Bot API 6.3
- (breaking change) All
is_
prefixed properties in models have been replaced with?
getters. For instance,is_anonymous
is nowanonymous?
. - (breaking change)
Client#default_parse_mode
andClient#default_command_prefixes
have been made class properties instead of instance properties. - Fixed issues with missing
priority
andgroup
properties on event handlers. - (breaking change)
extra/paginated_keyboard
no longer extendsInlineKeyboardMarkup
. - Added methods
Client#send_paginated_keyboard
,Chat#send_paginated_keyboard
,Message#reply_with_paginated_keyboard
, andMessage#respond_with_paginated_keyboard
. Requires import ofextra/paginated_keyboard
. - Fixed broken parts of
extra/routed_menu
. - Fixed broken parts of
extra/stage
. - Handlers no longer require an instance of
Tourmaline::Client
. - Added several new
UpdateAction
s includingThreadMessage
,ForumTopicCreated
,ForumTopicClosed
,ForumTopicReopened
,VideoChatScheduled
,VideoChatStarted
,VideoChatEnded
,VideoChatParticipantsInvited
, andWebAppData
. - Bot examples have all been fixed
- More, see the official Bot API changelog for a complete list of changes.
- Added
sender_type
method andSenderType
enum toMessage
, allowing the user to easily figure out what type of user or channel sent the given message. - Updated docs
- Removed
Container
class which was being used to maintain a global instance ofClient
. - Added
finish_init
method to all models, allowing them to contain an instance of theClient
that created them.
- Added full support for Bot API 5.4 and 5.5
- More, see the official Bot API changelog for a complete list of changes.
- Added full support for Bot API 5.1 - 5.3
- Fixed some dependencies.
- Added additional classes
ChatInviteLink
,VoiceChatStarted
,VoiceChatEnded
,VoiceChatParticipantInvited
,VoiceChatScheduled
,MessageAutoDeleteTimerChanged
,InputInvoiceMessageContent
, andBotCommandScope
. - Added
scope
andlanguage_code
options toset_my_commands
andget_my_commands
. - Added method
delete_my_commands
. - More, see the official Bot API changelog for a complete list of changes.
- Added support for TDLight.
- Added
user_token
argument toClient.new
to support the TDLight user API. - (breaking change) All arguments to
Client.new
are now keyword arguments. - (breaking change) Removed
async
argument from event handlers. All events are now async by default. Async events can be disabled with the-Dno_async
flag. UpdateHandler
now accepts an array ofUpdateAction
, or a single one.- Fixed an issue where
poll
always deletes a set webhook. Now it will only delete the webhook ifdelete_webhook
is true.
- (breaking change) Removed the filters, replaced with new handlers
- (breaking change) Removed Granite specific DB includes from models (also commented out
db_persistence.cr
; next update should make persistence better) - (breaking change) Renamed
PagedInlineKeyboard
toPagedKeyboard
- Added
RoutedMenu
class for easy menu building
- Replace broken
Int
in unions withInt::Primitive
- Make
Helpers.random_string
actually return a random string, not just a number - Change the first run logic in
Stage
- Added support for
Passport
- Added
animated?
toSticker
- Added several new filters including
InlineQueryFilter
andCallbackQueryFilter
- Added connection pooling to fix concurrency errors
- Events are now async by default
- Added a new helper class
PagedInlineKeyboard
- (breaking change) Moved KemalAdapter to
tourmaline/extra
- Added proxy support based on mamantoha/http_proxy
- Added support for multiple prefixes with commands
- Allow changing the log level using the
LOG
environment variable - Added an
InstaBot
example - (breaking change) Disabled (commented out) DBPersistence for now
- Updated for bot API 4.9
- Added support for the 🏀 emoji, including methods
Client#send_basket
,Message#reply_with_basket
, andMessage#respond_with_basket
- Added
via_bot
field toMessage
- Added support for the 🏀 emoji, including methods
- Added
Stage
(importable fromtourmaline/extra
) for conversation handling
- Added ameba checks
- Replaced Halite with
HTTP::Client
, resulting in a major speed boost - Rename
persistent_init
andpersistent_cleanup
toinit
andcleanup
respectively - Remove
handle_error
in favor ofError.from_code
- Updated polls for Quiz 2.0
- Added new
send_dart
method
- KeyboardMarkup
- (breaking change) Replace
Markup
class withKeyboardBuilder
abstract class and extend it withReplyKeyboardMarkup::Builder
andInlineKeyboardMarkup::Builder
. - Add
.build
methods toReplyKeyboardMarkup
andInlineKeyboardMarkup
. - (breaking change) Replace
QueryResultBuilder
withInlineQueryResult::Builder
. - Update examples with new
Builder
classes being used.
- (breaking change) Replace
- InlineQueryResult
- (breaking change) Replace
QueryResultBuilder
withInlineQueryResult::Builder
. - Add
.build
method toInlineQueryResult
. - Update examples with new
Builder
classes being used.
- (breaking change) Replace
- Persistence
- (breaking change) Made
Persistence
a class rather than a module and updatedHashPersistence
andJsonPersistence
to use it. - Add
persistence
instance variable toClient
- Add
NilPersistence
and make it the default persistence for newClient
s - Add
DBPersistence
- (breaking change) Made
- Add CHANGELOG
- Add support for Filters.
- Add
users
methods toUpdate
andMessage
to return all users included in the same. - Replaced usage of the
strange
logger with the new CrystalLog
class. - Log all updates with
Debug
severity ifVERBOSE
environment variable is set totrue
. - (breaking change) Renamed
File
toTFile
to avoid conflicting with the builtinFile
class. - (breaking change) removed the
Handler
class and all subclasses. Update handling is now done exclusively with theEventHandler
class andFilter
s.
- Fix bug with event handler that was causing
On
handlers to run on every update. - Add CNAME file for tourmaline.dev
- Update the logo.
- Add
DiceBot
example.
Updated to bot API 4.7
- Add
send_dice
method to client. - Add
BotCommand
model along withget_my_commands
andset_my_commands
methods. - Add new sticker/sticker set methods.
- Add
Dice
update action.