abstract class Tourmaline::Persistence

Overview

Abstract class meant to be a base for other persistence classes. The point of persistence (currently) is to allow Users and Chats to be saved as they're seen, and then provide a way for both to be fetched by either id or username.

Example:

bot = MyBot.new(API_KEY, persistence: Tourmaline::JsonPersistence.new)
# ... do some things
if user = bot.persistence.get_user?("foobar")
  pp user
end

Direct Known Subclasses

Defined in:

tourmaline/persistence.cr

Constructors

Instance Method Summary

Constructor Detail

def self.new #

[View source]

Instance Method Detail

abstract def chat_exists?(chat_id : Int) : Bool #

Returns true if the chat with the provided chat_id exists.


[View source]
abstract def chat_exists?(username : String) : Bool #

Returns true if the chat with the provided username exists.


[View source]
abstract def cleanup #

Gets called upon exit. It can be used to perform any necessary cleanup.


[View source]
abstract def get_chat(chat_id : Int) : Chat | Nil #

Fetches a chat by chat_id. Returns nil if the chat is not found.


[View source]
abstract def get_chat(username : String) : Chat | Nil #

Fetches a chat by username. Returns nil if the chat is not found.


[View source]
abstract def get_user(user_id : Int) : User | Nil #

Fetches a user by user_id. Returns nil if the user is not found.


[View source]
abstract def get_user(username : String) : User | Nil #

Fetches a user by username. Returns nil if the user is not found.


[View source]
abstract def handle_update(update : Update) #

Takes an Update object, pulls out all unique Chats and Users, and uses #update_user and #update_chat on each of them respectively.


[View source]
abstract def init #

Gets called when the bot is initialized. This can be used for setup if you need access to the bot instance.


[View source]
abstract def update_chat(chat : Chat) : Chat #

Create or update the provided Chat.


[View source]
abstract def update_user(user : User) : User #

Create or update the provided User.


[View source]
abstract def user_exists?(user_id : Int) : Bool #

Returns true if the user with the provided user_id exists.


[View source]
abstract def user_exists?(username : String) : Bool #

Returns true if the user with the provided username exists.


[View source]