In früheren Artikeln haben wir das Thema Bot-Erstellung ausreichend detailliert analysiert, vom Senden der ersten Nachricht bis zur Programmierung eines logischen Dialogs mit dem Bot.
Dies ist der letzte Artikel in dieser Reihe, in dem wir herausfinden, wie die Rechte zur Verwendung einzelner Bot-Methoden auf verschiedenen Ebenen verwaltet werden.

Alle Artikel aus der Reihe "Schreiben eines Telegrammbot in der Sprache R"
, , .
.. . , . , , .
, .
, 2 :
say_hello—what_time— ,
library(telegram.bot)
# Updater
updater <- Updater(' ')
#
##
say_hello <- function(bot, update) {
#
user_name <- update$message$from$first_name
#
bot$sendMessage(update$message$chat_id,
text = paste0(" , ", user_name, "!"),
parse_mode = "Markdown",
reply_to_message_id = update$message$message_id)
}
##
what_time <- function(bot, update) {
#
cur_time <- as.character(Sys.time())
#
bot$sendMessage(update$message$chat_id,
text = paste0(" , ", cur_time),
parse_mode = "Markdown",
reply_to_message_id = update$message$message_id)
}
#
h_hello <- CommandHandler('say_hello', say_hello)
h_time <- CommandHandler('what_time', what_time)
#
updater <- updater + h_hello + h_time
#
updater$start_polling(), ' ' , BotFather ( ).
, , .
, . , , - , .
, .
BaseFilter() MessageFilters. .
, BaseFilter() — message. , , . :
$message_id
[1] 1174
$from
$from$id
[1] 194336771
$from$is_bot
[1] FALSE
$from$first_name
[1] "Alexey"
$from$last_name
[1] "Seleznev"
$from$username
[1] "AlexeySeleznev"
$from$language_code
[1] "ru"
$chat
$chat$id
[1] 194336771
$chat$first_name
[1] "Alexey"
$chat$last_name
[1] "Seleznev"
$chat$username
[1] "AlexeySeleznev"
$chat$type
[1] "private"
$date
[1] 1601295189
$text
[1] " "
$chat_id
[1] 194336771
$from_user
[1] 194336771
, , . , :
## ,
MessageFilters$admins <- BaseFilter(
function(message) {
#
message$from$username %in% c('AlexeySeleznev', 'user1', 'user2')
}
)
c('AlexeySeleznev', 'user1', 'user2') — , , . .
## say_hello
MessageFilters$say_hello <- BaseFilter(
function(message) {
#
message$text == '/say_hallo'
}
)
## what_time
MessageFilters$what_time <- BaseFilter(
function(message) {
#
message$text == '/what_time'
}
)
#
h_hello <- MessageHandler(say_hello, MessageFilters$admins & MessageFilters$say_hello)
h_time <- MessageHandler(what_time, MessageFilters$admins & MessageFilters$what_time)
AlexeySeleznev, user1, user2. .
:
library(telegram.bot)
# Updater
updater <- Updater(' ')
#
##
say_hello <- function(bot, update) {
#
user_name <- update$message$from$first_name
#
bot$sendMessage(update$message$chat_id,
text = paste0(" , ", user_name, "!"),
parse_mode = "Markdown",
reply_to_message_id = update$message$message_id)
}
##
what_time <- function(bot, update) {
#
cur_time <- as.character(Sys.time())
#
bot$sendMessage(update$message$chat_id,
text = paste0(" , ", cur_time),
parse_mode = "Markdown",
reply_to_message_id = update$message$message_id)
}
#
## ,
MessageFilters$admins <- BaseFilter(
function(message) {
#
message$from$username %in% c('AlexeySeleznev', 'user1', 'user2')
}
)
## say_hello
MessageFilters$say_hello <- BaseFilter(
function(message) {
#
message$text == '/say_hallo'
}
)
## what_time
MessageFilters$what_time <- BaseFilter(
function(message) {
#
message$text == '/what_time'
}
)
#
h_hello <- MessageHandler(say_hello, MessageFilters$admins & MessageFilters$say_hello)
h_time <- MessageHandler(what_time, MessageFilters$admins & MessageFilters$what_time)
#
updater <- updater + h_hello + h_time
#
updater$start_polling(), . :
##
MessageFilters$chats <- BaseFilter(
function(message) {
#
message$chat_id %in% c(194336771, 0, 1)
}
)
## say_hello
MessageFilters$say_hello <- BaseFilter(
function(message) {
#
message$text == '/say_hallo'
}
)
## what_time
MessageFilters$what_time <- BaseFilter(
function(message) {
#
message$text == '/what_time'
}
)
#
h_hello <- MessageHandler(say_hello, MessageFilters$admins & MessageFilters$chats & MessageFilters$say_hello)
h_time <- MessageHandler(what_time, MessageFilters$admins & MessageFilters$chats & MessageFilters$what_time)
, .
, .
#
bot_check_usernames <-
function(admins, username) {
username %in% admins
}
admins , , username , .
, IF , . .
, , , what_time.
library(telegram.bot)
# Updater
updater <- Updater(' ')
#
##
say_hello <- function(bot, update) {
#
user_name <- update$message$from$username
#
if ( bot_check_usernames(c('AlexeySeleznev', 'user1', 'user2'), user_name) ) {
#
bot$sendMessage(update$message$chat_id,
text = paste0(" , ", user_name, "!"),
parse_mode = "Markdown",
reply_to_message_id = update$message$message_id)
} else {
#
bot$sendMessage(update$message$chat_id,
text = paste0(" !"),
parse_mode = "Markdown",
reply_to_message_id = update$message$message_id)
}
}
##
what_time <- function(bot, update) {
#
if ( bot_check_usernames(c('user1', 'user2'), update$message$from$username) ) {
#
cur_time <- as.character(Sys.time())
#
bot$sendMessage(update$message$chat_id,
text = paste0(" , ", cur_time),
parse_mode = "Markdown",
reply_to_message_id = update$message$message_id)
} else {
#
bot$sendMessage(update$message$chat_id,
text = paste0(" !"),
parse_mode = "Markdown",
reply_to_message_id = update$message$message_id)
}
}
#
h_hello <- CommandHandler('say_hello', say_hello)
h_time <- CommandHandler('what_time', what_time)
#
updater <- updater + h_hello + h_time
#
updater$start_polling():

, , .
, , , .
, .
bot_check_chat_id <-
function(allowed_chats, current_chat) {
current_chat %in% allowed_chats
}
:
library(telegram.bot)
# Updater
updater <- Updater(' ')
#
##
say_hello <- function(bot, update) {
#
user_name <- update$message$from$username
#
if ( bot_check_usernames(c('AlexeySeleznev', 'user1', 'user2'), user_name)
&
bot_check_chat_id(c(194336771, 1, 2), update$message$chat_id)) {
#
bot$sendMessage(update$message$chat_id,
text = paste0(" , ", user_name, "!"),
parse_mode = "Markdown",
reply_to_message_id = update$message$message_id)
} else {
#
bot$sendMessage(update$message$chat_id,
text = paste0(" !"),
parse_mode = "Markdown",
reply_to_message_id = update$message$message_id)
}
}
##
what_time <- function(bot, update) {
#
if ( bot_check_usernames(c('AlexeySeleznev', 'user1', 'user2'), update$message$from$username)
&
bot_check_chat_id(c(194336771, 1, 2), update$message$chat_id)) {
#
cur_time <- as.character(Sys.time())
#
bot$sendMessage(update$message$chat_id,
text = paste0(" , ", cur_time),
parse_mode = "Markdown",
reply_to_message_id = update$message$message_id)
} else {
#
bot$sendMessage(update$message$chat_id,
text = paste0(" !"),
parse_mode = "Markdown",
reply_to_message_id = update$message$message_id)
}
}
#
h_hello <- CommandHandler('say_hello', say_hello)
h_time <- CommandHandler('what_time', what_time)
#
updater <- updater + h_hello + h_time
#
updater$start_polling()telegram . , , , . , .
Viel Glück beim Botbau. In den Kommentaren können Sie Beispiele für Ihre Bots schreiben und wie Sie sie in der Praxis verwenden.