I will do my best to keep this updated with changes as they happen.
- Full support for Bot API 6.9
- See the official Bot API changelog for a complete list of changes.
The core functionality of Tourmaline is now auto generated from the official Bot API documentation. This means that Tourmaline will always be up to date with the latest version of the Bot API.
- New method set_my_name to change the bot's name. Returns True on success.
- New method get_my_name to get the current bot name for the user's language. Returns BotName on success.
- New Tourmaline::BotName class to represent the bot's name.
- New Tourmaline::InlineQueryResultsButton class to represent a button shown above inline query results.
- New Tourmaline::SwitchInlineQueryChosenChat class to represent an inline button for switching the user to inline mode in a chosen chat.
- Updated Tourmaline::WriteAccessAllowed class to include an optional web_app_name property for the Web App launched from a link.
- Modified Tourmaline::InlineKeyboardButton class to include an optional switch_inline_query_chosen_chat property.
- Updated Tourmaline::CallbackQuery class to include an optional via_chat_folder_invite_link property.
- Modified answerInlineQuery method to accept a Tourmaline::InlineQueryResultsButton instead of switch_pm_text and switch_pm_parameter parameters.
No bug fixes reported in this diff.
This release contains major breaking changes. If you currently rely on Tourmaline as a framework you may not want to update.
- Added full support for Bot API versions 6.4, 6.5, and 6.6
- (breaking change) Removed all annotation based handlers.
- (breaking change) Removed the
Handlers
namespace. All handlers now fall directly underTourmaline
. - (breaking change) Stripped Tourmaline of all magic. Models no longer have a
client
instance passed to them, instead we will now rely on theTourmaline::Context
which is passed to all handler callbacks.
Examples have been updated.
- 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.