TelegramBots/TelegramBots.wiki/abilities/Advanced.md

37 lines
1.8 KiB
Markdown
Raw Normal View History

2017-10-31 02:45:08 +01:00
# Advanced
This will be more of a FAQ on some important notes before you embark on your next big bot project!
2018-02-08 09:30:24 +01:00
## Default Abilities
2017-10-31 02:45:08 +01:00
It is possible to declare "DEFAULT" abilities that process non-command messages. This is quite close to a reply. If a user says "Hey there" and the default ability is implemented, it will process this input.
```java
/**
* This ability has an extra "flag". It needs a photo to activate! This feature is activated by default if there is no /command given.
*/
public Ability sayNiceToPhoto() {
return Ability.builder()
.name(DEFAULT) // DEFAULT ability is executed if user did not specify a command -> Bot needs to have access to messages (check FatherBot)
.flag(PHOTO)
.privacy(PUBLIC)
.locality(ALL)
.input(0)
.action(ctx -> silent.send("Daaaaang, what a nice photo!", ctx.chatId()))
.build();
}
```
This ability will send a *"Daaaaang, what a nice photo!"* whenever the bot receives a photo. This is one use case where replies and abilities are interchangeable.
## The Global Flag
2017-11-01 04:08:23 +01:00
There is a global flag in AbilityBot that restricts the kind of "updates" it can process. The default implementation is passthrough - it allows all updates to be processed.
As an example, if you want to restrict the updates to photos only, then you may do:
2017-10-31 02:45:08 +01:00
```java
@Override
public boolean checkGlobalFlags(Update update) {
2017-11-01 04:08:23 +01:00
return Flag.PHOTO;
2017-10-31 02:45:08 +01:00
}
```
## Statistics
AbilityBot can accrue basic statistics about the usage of your abilities and replies. Simply `enableStats()` on an Ability builder or `enableStats(<name>)` on replies to activate this feature. Once activated, you may call `/stats` and the bot will print a basic list of statistics. At the moment, AbilityBot only tracks hits. In the future, this will be enhanced to track more stats.