Java源码示例:org.telegram.telegrambots.meta.bots.AbsSender
示例1
@Override
public void execute(AbsSender absSender, User user, Chat chat, String[] strings) {
Subscribers subscribers = Subscribers.getInstance();
String ans;
Long id = chat.getId();
boolean isSubscribed = subscribers.isSubscribed(id);
if (isSubscribed) {
subscribers.unsubscribe(id);
ans = botStrings.get("message.unsub.success");
} else {
ans = botStrings.get("message.unsub.alreadyunsub");
}
SendMessage answer = new SendMessage();
answer.setChatId(chat.getId().toString());
answer.setText(ans);
try {
absSender.execute(answer);
} catch (TelegramApiException e) {
LOGGER.error(LOG_TAG, e);
}
}
示例2
/**
* Executes a command action if the command is registered.
*
* @note If the command is not registered and there is a default consumer,
* that action will be performed
*
* @param absSender absSender
* @param message input message
* @return True if a command or default action is executed, false otherwise
*/
public final boolean executeCommand(AbsSender absSender, Message message) {
if (message.hasText()) {
String text = message.getText();
if (text.startsWith(BotCommand.COMMAND_INIT_CHARACTER)) {
String commandMessage = text.substring(1);
String[] commandSplit = commandMessage.split(BotCommand.COMMAND_PARAMETER_SEPARATOR_REGEXP);
String command = removeUsernameFromCommandIfNeeded(commandSplit[0]);
if (commandRegistryMap.containsKey(command)) {
String[] parameters = Arrays.copyOfRange(commandSplit, 1, commandSplit.length);
commandRegistryMap.get(command).processMessage(absSender, message, parameters);
return true;
} else if (defaultConsumer != null) {
defaultConsumer.accept(absSender, message);
return true;
}
}
}
return false;
}
示例3
@Override
public void execute(AbsSender absSender, User user, Chat chat, String[] strings) {
DatabaseManager databseManager = DatabaseManager.getInstance();
StringBuilder messageBuilder = new StringBuilder();
String userName = user.getFirstName() + " " + user.getLastName();
if (databseManager.getUserStateForCommandsBot(user.getId())) {
messageBuilder.append("Hi ").append(userName).append("\n");
messageBuilder.append("i think we know each other already!");
} else {
databseManager.setUserStateForCommandsBot(user.getId(), true);
messageBuilder.append("Welcome ").append(userName).append("\n");
messageBuilder.append("this bot will demonstrate you the command feature of the Java TelegramBots API!");
}
SendMessage answer = new SendMessage();
answer.setChatId(chat.getId().toString());
answer.setText(messageBuilder.toString());
try {
absSender.execute(answer);
} catch (TelegramApiException e) {
BotLogger.error(LOGTAG, e);
}
}
示例4
@Override
public void execute(AbsSender absSender, User user, Chat chat, String[] arguments) {
DatabaseManager dbManager = DatabaseManager.getInstance();
if (dbManager.getUserStateForCommandsBot(user.getId())) {
dbManager.setUserStateForCommandsBot(user.getId(), false);
String userName = user.getFirstName() + " " + user.getLastName();
SendMessage answer = new SendMessage();
answer.setChatId(chat.getId().toString());
answer.setText("Good bye " + userName + "\n" + "Hope to see you soon!");
try {
absSender.execute(answer);
} catch (TelegramApiException e) {
BotLogger.error(LOGTAG, e);
}
}
}
示例5
@Override
public void execute(AbsSender absSender, User user, Chat chat, String[] strings) {
if (!DatabaseManager.getInstance().getUserStateForCommandsBot(user.getId())) {
return;
}
StringBuilder helpMessageBuilder = new StringBuilder("<b>Help</b>\n");
helpMessageBuilder.append("These are the registered commands for this Bot:\n\n");
for (IBotCommand botCommand : commandRegistry.getRegisteredCommands()) {
helpMessageBuilder.append(botCommand.toString()).append("\n\n");
}
SendMessage helpMessage = new SendMessage();
helpMessage.setChatId(chat.getId().toString());
helpMessage.enableHtml(true);
helpMessage.setText(helpMessageBuilder.toString());
try {
absSender.execute(helpMessage);
} catch (TelegramApiException e) {
BotLogger.error(LOGTAG, e);
}
}
示例6
@Override
public void execute(AbsSender absSender, User user, Chat chat, String[] strings) {
Subscribers subscribers = Subscribers.getInstance();
String toSend;
Long id = chat.getId();
boolean isSubscribed = subscribers.isSubscribed(id);
if (isSubscribed) {
boolean isApproved = subscribers.isApproved(id);
if (CONFIG.getApprovalType() == UserApprover.ApprovalType.ALL) {
toSend = botStrings.get("message.status.approved");
} else {
toSend = isApproved
? botStrings.get("message.status.approved")
: botStrings.get("message.status.unapproved");
}
} else {
toSend = botStrings.get("message.status.unsubscribed");
}
SendMessage answer = new SendMessage();
answer.setChatId(chat.getId().toString());
answer.setText(toSend);
try {
absSender.execute(answer);
} catch (TelegramApiException e) {
LOGGER.error(LOG_TAG, e);
}
}
示例7
@Override
public void execute(AbsSender absSender, User user, Chat chat, String[] strings) {
SendMessage answer = new SendMessage();
answer.setChatId(chat.getId().toString());
answer.setText(botStrings.get("message.help"));
try {
absSender.execute(answer);
} catch (TelegramApiException e) {
LOGGER.error(LOG_TAG, e);
}
}
示例8
@Override
public void execute(AbsSender absSender, User user, Chat chat, String[] strings) {
Subscribers subscribers = Subscribers.getInstance();
String ans;
Long id = chat.getId();
String name = chat.isUserChat() ? user.toString() : chat.toString();
boolean isSubscribed = subscribers.isSubscribed(id);
if (!isSubscribed) {
subscribers.subscribe(name, id);
ans = botStrings.get("message.sub.success");
} else {
ans = botStrings.get("message.sub.alreadysub");
}
SendMessage answer = new SendMessage();
answer.setChatId(chat.getId().toString());
answer.setText(ans);
try {
absSender.execute(answer);
} catch (TelegramApiException e) {
LOGGER.error(LOG_TAG, e);
}
}
示例9
@Override
public void execute(AbsSender absSender, User user, Chat chat, String[] strings) {
SendMessage answer = new SendMessage();
answer.setChatId(chat.getId().toString());
answer.setText(botStrings.get("message.help"));
try {
absSender.execute(answer);
} catch (TelegramApiException e) {
LOGGER.error(LOG_TAG, e);
}
}
示例10
@Override
public void execute(AbsSender absSender, User user, Chat chat, String[] arguments) {
if (!DatabaseManager.getInstance().getUserStateForCommandsBot(user.getId())) {
return;
}
String userName = chat.getUserName();
if (userName == null || userName.isEmpty()) {
userName = user.getFirstName() + " " + user.getLastName();
}
StringBuilder messageTextBuilder = new StringBuilder("Hello ").append(userName);
if (arguments != null && arguments.length > 0) {
messageTextBuilder.append("\n");
messageTextBuilder.append("Thank you so much for your kind words:\n");
messageTextBuilder.append(String.join(" ", arguments));
}
SendMessage answer = new SendMessage();
answer.setChatId(chat.getId().toString());
answer.setText(messageTextBuilder.toString());
try {
absSender.execute(answer);
} catch (TelegramApiException e) {
BotLogger.error(LOGTAG, e);
}
}
示例11
@Override
public void registerDefaultAction(BiConsumer<AbsSender, Message> defaultConsumer) {
this.defaultConsumer = defaultConsumer;
}
示例12
@Override
public final void execute(AbsSender absSender, User user, Chat chat, String[] arguments) {
}
示例13
@Override
public void registerDefaultAction(BiConsumer<AbsSender, Message> defaultConsumer) {
commandRegistry.registerDefaultAction(defaultConsumer);
}
示例14
/**
* Register a default action when there is no command register that match the message sent
* @param defaultConsumer Consumer to evaluate the message
*
* @note Use this method if you want your bot to execute a default action when the user
* sends a command that is not registered.
*/
void registerDefaultAction(BiConsumer<AbsSender, Message> defaultConsumer);
示例15
/**
* Process the message and execute the command
*
* @param absSender absSender to send messages over
* @param message the message to process
*/
void processMessage(AbsSender absSender, Message message, String[] arguments);
示例16
/**
* Process the message and execute the command
*
* @param absSender absSender to send messages over
* @param message the message to process
* @param arguments passed arguments
*/
@Override
public void processMessage(AbsSender absSender, Message message, String[] arguments) {
execute(absSender, message.getFrom(), message.getChat(), message.getMessageId(), arguments);
}
示例17
/**
* Execute the command
*
* @param absSender absSender to send messages over
* @param user the user who sent the command
* @param chat the chat, to be able to send replies
* @param messageId message id for interaction
* @param arguments passed arguments
*/
public abstract void execute(AbsSender absSender, User user, Chat chat, Integer messageId, String[] arguments);
示例18
/**
* Process the message and execute the command
*
* @param absSender absSender to send messages over
* @param message the message to process
* @param arguments passed arguments
*/
public void processMessage(AbsSender absSender, Message message, String[] arguments) {
execute(absSender, message.getFrom(), message.getChat(), arguments);
}
示例19
/**
* Execute the command
*
* @param absSender absSender to send messages over
* @param user the user who sent the command
* @param chat the chat, to be able to send replies
* @param arguments passed arguments
*/
public abstract void execute(AbsSender absSender, User user, Chat chat, String[] arguments);