Size: a a a

R (язык программирования)

2020 June 25

ИК

Иван Котомин... in R (язык программирования)
Andrey
Меня вот раз пытались убедить делать поправку для уровней значимости при анализа данных по переносимости препарата. А на самом деле в таком анализе риском потребителя является ошибка 2 рода, то есть уменьшая уровень значимости для каждого отдельного сравнения мы просто лишаем себя возможности признать различия значимыми, тем самым делая препарат "безопаснее". Короче, тут играет роль баланс между чувствительностью и специфичностью
Да, тут мне нечего возразить, на том и стоим! :)
источник

АК

Артём Клевцов... in R (язык программирования)
источник

AS

Alexey Seleznev in R (язык программирования)
Друзья, а никто в telegram.bot не использовал InlineKeyboardMarkup() ?

С ReplyKeyboardMarkup() всё понятно, получаешь текстовое сообщение, под него пишешь фильтр, и обработчик MessageHandler().

А вот как обрабатывать то что отдаёт InlineKeyboardMarkup() непонятно, в справке написано вот такое:

Note: After the user presses a callback button, Telegram clients will display a progress bar until you call answerCallbackQuery. It is, therefore, necessary to react by calling answerCallbackQuery even if no notification to the user is needed (e.g., without specifying any of the optional parameters).

Но как мне написать обработчик всё равно не понятно
источник

AS

Alexey Seleznev in R (язык программирования)
т.е. я понимаю что надо использовать CallbackQueryHandler(), но что туда передать, что бы он понимал какую кнопку нажали непонимаю
источник

AS

Alexey Seleznev in R (язык программирования)
Вот пример из справки:

bot <- Bot(token = "TOKEN")
chat_id <- "CHAT_ID"

# Create Inline Keyboard
text <- "Could you type their phone number, please?"
IKM <- InlineKeyboardMarkup(
 inline_keyboard = list(
   list(
     InlineKeyboardButton(1),
     InlineKeyboardButton(2),
     InlineKeyboardButton(3)
   ),
   list(
     InlineKeyboardButton(4),
     InlineKeyboardButton(5),
     InlineKeyboardButton(6)
   ),
   list(
     InlineKeyboardButton(7),
     InlineKeyboardButton(8),
     InlineKeyboardButton(9)
   ),
   list(
     InlineKeyboardButton("*"),
     InlineKeyboardButton(0),
     InlineKeyboardButton("#")
   )
 )
)

# Send Inline Keyboard
bot$sendMessage(chat_id, text, reply_markup = IKM)
источник

AM

Andrey Makeev in R (язык программирования)
Alexey Seleznev
Друзья, а никто в telegram.bot не использовал InlineKeyboardMarkup() ?

С ReplyKeyboardMarkup() всё понятно, получаешь текстовое сообщение, под него пишешь фильтр, и обработчик MessageHandler().

А вот как обрабатывать то что отдаёт InlineKeyboardMarkup() непонятно, в справке написано вот такое:

Note: After the user presses a callback button, Telegram clients will display a progress bar until you call answerCallbackQuery. It is, therefore, necessary to react by calling answerCallbackQuery even if no notification to the user is needed (e.g., without specifying any of the optional parameters).

Но как мне написать обработчик всё равно не понятно
я буквально неделю назад с этим мучался, у меня так и  не получилось заставить работать InlineKeyboardMarkup. Там есть хендлер, но он даёт ошибку в телеграм API.

Вот код который должен по идее обрабатывать события
answer_cb <- function(bot, update) {

 
 data <- update$callback_query$data

 # что-то делаем
 
 bot$answerCallbackQuery(callback_query_id = update$update_id) ## что-то не так
}
query_handler <- CallbackQueryHandler(answer_cb)
источник

AM

Andrey Makeev in R (язык программирования)
т.е. нужно использовать answerCallbackQuery, куда посылаем update ID, но он всё время оказывается "протухшим"
источник

AS

Alexey Seleznev in R (язык программирования)
Andrey Makeev
т.е. нужно использовать answerCallbackQuery, куда посылаем update ID, но он всё время оказывается "протухшим"
ааа вот оно чё, ну пакет 8 месяцев не обновлялся, и автор на гитхабе как то не сильно вообще активничает, может в API что то поменялось
источник

AS

Alexey Seleznev in R (язык программирования)
но в любом случае спасибо большое за пример, и за то что избавили от того что бы я тоже потратил кучу времени на это
источник

AS

Alexey Seleznev in R (язык программирования)
data <- update$callback_query$data

а что тут будет в update$callback_query$data, текст нажатой кнопки ?
источник

AM

Andrey Makeev in R (язык программирования)
Alexey Seleznev
data <- update$callback_query$data

а что тут будет в update$callback_query$data, текст нажатой кнопки ?
не совсем. Нужно кнопке присвоить какое-то значение параметра callback_data, то есть идентификатор или еще что-то.

InlineKeyboardButton(text, url = NULL, callback_data = NULL,
 switch_inline_query = NULL, switch_inline_query_current_chat = NULL)
источник

AM

Andrey Makeev in R (язык программирования)
так вы сможете идентифицировать какая конкретно кнопка была нажата
источник

AS

Alexey Seleznev in R (язык программирования)
Andrey Makeev
так вы сможете идентифицировать какая конкретно кнопка была нажата
благодарю
источник

AM

Andrey Makeev in R (язык программирования)
Если у вас всё же получится заставить инлайн кнопки работать  - сообщита пожалуйста :)
источник

AS

Alexey Seleznev in R (язык программирования)
теперь у меня пазл сложился
источник

AS

Alexey Seleznev in R (язык программирования)
но как вы до этого всего догадались непонятно, по докам это нереально
источник

AM

Andrey Makeev in R (язык программирования)
нереально, да. Читал TelegramAPI и методом тыка искал в хелпе функции
источник

AS

Alexey Seleznev in R (язык программирования)
я и гуглил, и перечитал все доки и виньетки, но именно по теме клавиатур доки не годятся совсем
источник

AS

Alexey Seleznev in R (язык программирования)
просто автору надо было всё что связано например с инлайн клавиатурой засунуть в одну доку, просто функции по алиасам собрать, и показать нормальный пример кода
источник

AM

Andrey Makeev in R (язык программирования)
мне кажется на крайняк можно с АПИ общаться через httr и недостающие фичи допиливать, но как не хочется этим заниматься когда есть либа)
источник