Здравствуйте, возможно ли сделать так, что бы вместе с сообщением пользователя выводились кнопки "ответить" и "забанить", и после нажатия на "ответить", и ответа админа на сообщение кнопка становилась не активной и меняла текст на "ответ отправлен", а после нажатия "забанить" пользователь был бы заблокирован и больше не мог пользоваться ботом? Если возможно, то подскажите в каком направлении двигаться...
В js я еще слабоват, поэтому развернутый ответ был бы очень полезен...
Откройте по ссылке или QR бот @iMakeBot, нажмите кнопку Старт/Start.
Следуйте инструкциям бота.
Кнопку приаттачить к сообщению без проблем, нужно или нативно прописывать или же можно также расширить класс Bot, и добавить методы отрисовки кнопки и набора кнопок:
Сделать неактивной inline кнопку не получиться, нет такого функционала, если только повесить на
action
метод который бы выводилnotice
"На сообщение уже был ответ", но лучше просто удалить кнопку из набора, через метод класса Bot.Также можно не менять логику и при нажатии на кнопку "Ответить" подставлять в ответ сообщение через
forceReply
Для блокировки пользователя, нужно добавить в набор колонок новую колонку
ban
В новой колонке ban храните или 1 (блокирован) или 0 (не блокирован)
Не забудьте про последовательность нумерации (или можете подсмотреть как сделано в статье про Бот-магазин - там уже ненужно следить за нумерацией). Также нужно в классе User подправить метод save() добавить для новых пользователей пятым значением: 0
Action
для кнопки "Забанить" просто блокировка пользователя - в данном примере нужно будет писать что-то похожее на методsave()
класса User, уже в Бот-магазине там просто было бы:В роутере обязательно сделать проверку на бан пользователя
Благодарю, очень содержательный ответ, буду разбираться, что к чему...
Хотелось бы еще узнать: Если пользователь написал сообщение и отправил, а потом удалил это сообщение, возможно ли реализовать удаление этого сообщения или пометить его как удаленное и у админа, так как отвечать на него уже нет необходимости?
Сам не проверял, но вроде не припомню что бы было техническое сообщение на вебхук при удалении сообщения. Если такое есть то можно подумать.
Я знаю, что в каналах удаление сообщений возможно, но вот в данном случае не приложу ума как это организовать...
Удалить сообщение не проблема есть метод
deleteMessage()
для этого нужен message_id, и событие по которому можно запустить удаление, например если при удалении пользователем сообщения будет событие - уведомление вебхука служебным сообщением - типа удалено сообщение с таким то message_id - тогда можно что-нибудь придумать - а без этого вы просто не узнаете, что оно удалено.Если только не делать проверку на существование этого сообщения у пользователя))) (я как-то делал такое в канале)
Понял, рановато мне еще заострять на это внимание, буду учиться реализовывать что то по проще...
Еще вопрос, по поводу последовательности заполнения в таблице, как вы относитесь к использованию библиотек? Стоит ли использовать, например вот эту https://www.npmjs.com/package/sheetquery или лучше реализацию выполнять самому в скрипте?
Я для прокачки своего скилла - сделал что-то похожее и по функционалу минимальное - только то что было нужно мне в проекте, но не брезгую использовать уже готовое - экономит время.
Ну, уж чего чего, а времени у меня предостаточно...
Огромное Спасибо...