HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   ANTICHAT > ПРОГРАММИРОВАНИЕ > Общие вопросы программирования
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #1  
Старый 02.06.2022, 22:05
Koro Kuro
Участник форума
Регистрация: 05.09.2019
Сообщений: 215
С нами: 3520722

Репутация: 33
По умолчанию

Как сделать кнопки в кнопке? Допустим человек в боте нажимает обычную (Reply) кнопку "Анекдот". И ему бот выдаёт текст "Выберите анекдот" и две обычные кнопки "Смешной" и "Грустный". И исходя из выбранной кнопки, бот отправит анекдот.
 
Ответить с цитированием

  #2  
Старый 03.06.2022, 05:35
laiser
Участник форума
Регистрация: 21.12.2013
Сообщений: 181
С нами: 6522707

Репутация: 83
По умолчанию

Кнопки в кнопке? Это как так?

Также, ты не сказал, какую библиотеку ты используешь. aiogram, telebot, requests...

Написал код на aiogram, так как использую ее сам:

Python:





Код:
from
aiogram
import
executor
from
aiogram
import
Bot
,
Dispatcher
,
types
from
aiogram
.
contrib
.
fsm_storage
.
memory
import
MemoryStorage
from
aiogram
.
types
import
ReplyKeyboardMarkup

bot
=
Bot
(
token
=
BOT_TOKEN
,
parse_mode
=
types
.
ParseMode
.
HTML
)
dp
=
Dispatcher
(
bot
,
storage
=
MemoryStorage
(
)
)
@dp.message_handler
(
commands
=
[
'start'
]
)
async
def
bot_start
(
message
:
types
.
Message
)
:
menu_default
=
ReplyKeyboardMarkup
(
resize_keyboard
=
True
)
menu_default
.
row
(
"Анекдот"
)
await
message
.
answer
(
'(Reply) кнопку'
,
reply_markup
=
menu_default
)
@dp.message_handler
(
text
=
'Анекдот'
)
async
def
bot_start
(
message
:
types
.
Message
)
:
menu_default
=
ReplyKeyboardMarkup
(
resize_keyboard
=
True
)
menu_default
.
row
(
"Смешной"
,
"Грустный"
)
await
message
.
answer
(
'Выберите анекдот'
,
reply_markup
=
menu_default
)
@dp.message_handler
(
text
=
[
'Смешной'
,
'Грустный'
]
)
async
def
bot_start
(
message
:
types
.
Message
)
:
if
message
.
text
==
'Смешной'
:
await
message
.
answer
(
'Колобок повесился'
)
else
:
await
message
.
answer
(
'Он остался жив('
)
if
__name__
==
"__main__"
:
executor
.
start_polling
(
dp
)


Весь текст желательно вынести в файлик, например json или БД

Код с кнопками желательно вынести в другой скрипт, где будут все кнопки, чтобы можно было обращаться к ним из любого места.
 
Ответить с цитированием
Ответ



Предыдущая тема Следующая тема

Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.