Package org.telegram.abilitybots.api.bot
Class BaseAbilityBot
java.lang.Object
org.telegram.telegrambots.meta.bots.AbsSender
org.telegram.telegrambots.bots.DefaultAbsSender
org.telegram.abilitybots.api.bot.BaseAbilityBot
- All Implemented Interfaces:
AbilityExtension
- Direct Known Subclasses:
AbilityBot
,AbilityWebhookBot
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 extends DefaultAbsSender
.
All bots extending the BaseAbilityBot
get implicit abilities:
- /claim - Claims this bot
- Sets the user as the
Privacy.CREATOR
of the bot - Only the user with the ID returned by
creatorId()
can genuinely claim the 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 MessageSender
sender
.
All bots extending BaseAbilityBot can use both handles in their update consumers.
- Author:
- Abbas Abou Daya
-
Field Summary
Modifier and TypeFieldDescriptionstatic final String
static final String
protected final DBContext
protected static final String
protected MessageSender
protected SilentSender
static final String
static final String
static final String
Fields inherited from class org.telegram.telegrambots.bots.DefaultAbsSender
exe
-
Constructor Summary
ModifierConstructorDescriptionprotected
BaseAbilityBot
(String botToken, String botUsername, DBContext db, AbilityToggle toggle, DefaultBotOptions botOptions) -
Method Summary
Modifier and TypeMethodDescriptionprotected void
addExtension
(AbilityExtension extension) protected void
addExtensions
(Collection<AbilityExtension> extensions) protected void
addExtensions
(AbilityExtension... extensions) admins()
protected boolean
protected boolean
checkGlobalFlags
(org.telegram.telegrambots.meta.api.objects.Update update) Test the update against the provided global flags.abstract long
db()
protected String
protected String
getPrivacy
(org.telegram.telegrambots.meta.api.objects.Update update, long id) boolean
isAdmin
(long id) boolean
isCreator
(long id) boolean
isGroupAdmin
(long chatId, long id) boolean
isGroupAdmin
(org.telegram.telegrambots.meta.api.objects.Update update, long id) void
void
onUpdateReceived
(org.telegram.telegrambots.meta.api.objects.Update update) This method contains the stream of actions that are applied on any update.replies()
sender()
silent()
stats()
userIds()
users()
Methods inherited from class org.telegram.telegrambots.bots.DefaultAbsSender
downloadFile, downloadFile, downloadFile, downloadFile, downloadFileAsStream, downloadFileAsStream, downloadFileAsync, downloadFileAsync, execute, execute, execute, execute, execute, execute, execute, execute, execute, execute, execute, execute, execute, execute, execute, execute, executeAsync, executeAsync, executeAsync, executeAsync, executeAsync, executeAsync, executeAsync, executeAsync, executeAsync, executeAsync, executeAsync, executeAsync, executeAsync, executeAsync, executeAsync, executeAsync, getBaseUrl, getBotToken, getOptions, sendApiMethod, sendApiMethodAsync, sendApiMethodAsync
Methods inherited from class org.telegram.telegrambots.meta.bots.AbsSender
execute, executeAsync, executeAsync, getMe, getMeAsync, getMeAsync, getWebhookInfo, getWebhookInfoAsync, getWebhookInfoAsync
-
Field Details
-
DEFAULT
- See Also:
-
ADMINS
- See Also:
-
USERS
- See Also:
-
USER_ID
- See Also:
-
BLACKLIST
- See Also:
-
STATS
- See Also:
-
db
-
sender
-
silent
-
-
Constructor Details
-
BaseAbilityBot
protected BaseAbilityBot(String botToken, String botUsername, DBContext db, AbilityToggle toggle, DefaultBotOptions botOptions)
-
-
Method Details
-
creatorId
public abstract long creatorId() -
onRegister
public void onRegister() -
db
- Returns:
- the database of this bot
-
sender
- Returns:
- the message sender for this bot
-
silent
- Returns:
- the silent sender for this bot
-
users
- Returns:
- the map of <ID,User>
-
userIds
- Returns:
- the map of <Username,ID>
-
blacklist
- Returns:
- a blacklist containing all the IDs of the banned users
-
admins
- Returns:
- an admin set of all the IDs of bot administrators
-
stats
- Returns:
- a mapping of ability and reply names to their corresponding statistics
-
abilities
- Returns:
- the immutable map of <String,Ability>
-
replies
- Returns:
- the immutable list carrying the embedded replies
-
onUpdateReceived
public void onUpdateReceived(org.telegram.telegrambots.meta.api.objects.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.
- Parameters:
update
- the update received by Telegram's API
-
getBotUsername
-
getPrivacy
-
isGroupAdmin
public boolean isGroupAdmin(org.telegram.telegrambots.meta.api.objects.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(org.telegram.telegrambots.meta.api.objects.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 TelegramUpdate
- Returns:
- true if the update satisfies the global flags
-
getCommandPrefix
-
getCommandRegexSplit
-
allowContinuousText
protected boolean allowContinuousText() -
addExtension
-
addExtensions
-
addExtensions
-