Class BaseAbilityBot

Object
BaseAbilityBot
All Implemented Interfaces:
AbilityExtension, LongPollingUpdateConsumer, LongPollingSingleThreadUpdateConsumer
Direct Known Subclasses:
AbilityBot, AbilityWebhookBot

public abstract class BaseAbilityBot extends Object implements AbilityExtension, LongPollingSingleThreadUpdateConsumer
The father of all ability bots. Bots that need to utilize abilities need to extend this bot.

It's important to note that this bot strictly implements LongPollingSingleThreadUpdateConsumer.

All bots extending the BaseAbilityBot get implicit abilities:

  • /claim - Claims this bot
  • /report - reports all user-defined commands (abilities)
    • The same format acceptable by BotFather
  • /commands - returns a list of all possible bot commands based on the privacy of the requesting user
  • /backup - returns a backup of the bot database
  • /recover - recovers the database
  • /promote @username - promotes user to bot admin
  • /demote @username - demotes bot admin to user
  • /ban @username - bans the user from accessing your bot commands and features
  • /unban @username - lifts the ban from the user

Additional information of the implicit abilities are present in the methods that declare them.

The two most important handles in the BaseAbilityBot are the DBContext db and the TelegramClient sender. All bots extending BaseAbilityBot can use both handles in their update consumers.

Author:
Abbas Abou Daya
  • Field Details

  • Constructor Details

  • Method Details

    • creatorId

      public abstract long creatorId()
    • onRegister

      public void onRegister()
    • users

      public Map<Long,User> users()
      Returns:
      the map of <ID, User>
    • userIds

      public Map<String,Long> userIds()
      Returns:
      the map of <Username, ID>
    • blacklist

      public Set<Long> blacklist()
      Returns:
      a blacklist containing all the IDs of the banned users
    • admins

      public Set<Long> admins()
      Returns:
      an admin set of all the IDs of bot administrators
    • consume

      public void consume(Update update)
      This method contains the stream of actions that are applied on any update.

      It will correctly handle addition of users into the DB and the execution of abilities and replies.

      Specified by:
      consume in interface LongPollingSingleThreadUpdateConsumer
      Parameters:
      update - the update received by Telegram's API
    • getPrivacy

      public Privacy getPrivacy(Update update, long id)
    • isGroupAdmin

      public boolean isGroupAdmin(Update update, long id)
    • isGroupAdmin

      public boolean isGroupAdmin(long chatId, long id)
    • isCreator

      public boolean isCreator(long id)
    • isAdmin

      public boolean isAdmin(long id)
    • checkGlobalFlags

      protected boolean checkGlobalFlags(Update update)
      Test the update against the provided global flags. The default implementation is a passthrough to all updates.

      This method should be overridden if the user wants to restrict bot usage to only certain updates.

      Parameters:
      update - a Telegram Update
      Returns:
      true if the update satisfies the global flags
    • getCommandPrefix

      protected String getCommandPrefix()
    • getCommandRegexSplit

      protected String getCommandRegexSplit()
    • allowContinuousText

      protected boolean allowContinuousText()
    • addExtension

      protected void addExtension(AbilityExtension extension)
    • addExtensions

      protected void addExtensions(AbilityExtension... extensions)
    • addExtensions

      protected void addExtensions(Collection<AbilityExtension> extensions)
    • onInputViolation

      protected void onInputViolation(Update update, Ability ability)
      Called when user input doesn't match the required number of arguments for the ability.

      Deafult implementation sends localized AbilityMessageCodes.CHECK_INPUT_FAIL message to the user.

      Override this method to custom handle input errors (e.g. send usage example or do nothing).

      Parameters:
      update - update that caused the violation
      ability - ability that was attempted to be executed
    • onLocalityViolation

      protected void onLocalityViolation(Update update, Ability ability)
      Called when the user tries to use ability in locality that isn't allowed (e.g. using Locality.GROUP ability in private chat).

      Deafult implementation sends localized AbilityMessageCodes.CHECK_LOCALITY_FAIL message to the user.

      Override this method to custom handle locality errors (e.g. silent ignore in groups).

      Parameters:
      update - update that caused the violation
      ability - ability that was attempted to be executed
    • onPrivacyViolation

      protected void onPrivacyViolation(Update update, Ability ability)
      Called when the user doesn't have required Privacy level to execute the ability.

      Deafult implementation sends localized AbilityMessageCodes.CHECK_PRIVACY_FAIL message to the user.

      Override this method to custom handle privacy errors (e.g. log the attempt or ban the user).

      Parameters:
      update - update that caused the violation
      ability - ability that was attempted to be executed