 |

04.09.2021, 16:05
|
|
Флудер
Регистрация: 10.10.2016
Сообщений: 9,228
С нами:
5046982
Репутация:
183
|
|
Как сделать такие кнопки? Если текст кнопки "/get", то все норм, но если изменить текст кнопки на "Узнать погоду", то бот ничего не отправляет в ответ
python:
Код:
@bot
.
message_handler
(
commands
=
[
'start'
]
)
def
start_command
(
message
)
:
keyboard
=
telebot
.
types
.
ReplyKeyboardMarkup
(
True
)
keyboard
.
row
(
'узнать погоду'
)
bot
.
send_message
(
message
.
chat
.
id
,
'Привет!'
,
reply_markup
=
keyboard
)
bot
.
send_message
(
message
.
chat
.
id
,
'Привет, ты запустил бота Chapos Weather Bot, напиши "/get" если хочешь узнать погоду (леха пасаси)'
)
@bot
.
message_handler
(
commands
=
[
'узнать погоду'
]
)
def
start_command
(
message
)
:
res
=
requests
.
get
(
api_url
+
'id='
+
cityid
+
'&units='
+
cf
+
'&APPID='
+
apikey
)
if
res
.
status_code
==
200
:
bot
.
send_message
(
message
.
chat
.
id
,
'Ожидание ответа от api.openweathermap.org...'
)
res_payload_dict
=
res
.
json
(
)
data
=
res
.
json
(
)
bot
.
send_message
(
message
.
chat
.
id
,
'Город: '
+
str
(
data
[
'name'
]
)
+
'\nТемпература: '
+
str
(
data
[
'main'
]
[
'temp'
]
)
+
' (ощущается как '
+
str
(
data
[
'main'
]
[
'feels_like'
]
)
+
')'
)
else
:
bot
.
send_message
(
message
.
chat
.
id
,
'Ошибка при обращении к API'
)
|
|
|

04.09.2021, 16:50
|
|
Новичок
Регистрация: 03.08.2021
Сообщений: 1
С нами:
2516120
Репутация:
0
|
|
у тебя должен быть callback на кнопку
|
|
|

04.09.2021, 19:45
|
|
Флудер
Регистрация: 10.10.2016
Сообщений: 9,228
С нами:
5046982
Репутация:
183
|
|
Сообщение от dalbaebebannuy
у тебя должен быть callback на кнопку
как его создать? в гайдах не нашел
|
|
|

04.09.2021, 20:03
|
|
Познавший АНТИЧАТ
Регистрация: 18.06.2017
Сообщений: 1,632
С нами:
4686777
Репутация:
183
|
|
у тя калбек на команду, а при нажатии на кнопку юзер просто считай текст отправляет
|
|
|

04.09.2021, 20:59
|
|
Участник форума
Регистрация: 17.04.2020
Сообщений: 184
С нами:
3197792
Репутация:
83
|
|
Я делал по другому, создавал кнопку с текстом, при её нажатии отправлялся текст, и обработчиком перехватывал его, и выдавал какую-нибудь функцию. Насчёт callback data в кнопках такого типа, я сам не знаю
Насколько я понял callback есть только у InlineKeyboardMarkup. (кнопки на сообщениях, а не снизу)
Python:
Код:
@bot.message_handler
(
commands
=
[
'start'
]
)
def
start
(
message
)
:
"""sticker"""
#start_sticker = open('stickers/hello_sticker.tgs', 'rb')
"""start keyboard"""
markup
=
types
.
ReplyKeyboardMarkup
(
resize_keyboard
=
True
,
row_width
=
3
)
button1
=
types
.
KeyboardButton
(
'Узнать погоду в городе'
)
markup
.
add
(
button1
)
"""start message"""
#bot.send_sticker(message.chat.id, start_sticker)
bot
.
send_message
(
message
.
chat
.
id
,
'Привет!\nЯ помогу тебе узнать погоду в городе.\n\nПросто нажми на кнопку ниже,\nили используй команду /weather.'
,
reply_markup
=
markup
)
@bot.message_handler
(
content_types
=
[
'text'
]
)
def
sendweather
(
message
)
:
global
city
if
message
.
text
==
'Узнать погоду в городе'
:
"""YOUR CODE"""
|
|
|

04.09.2021, 21:30
|
|
Участник форума
Регистрация: 13.02.2019
Сообщений: 183
С нами:
3815624
Репутация:
83
|
|
Вы че совсем уже инопланетяне обдолбаные, я ипу. Какие нах колбэки для текстовых кнопок вы че...
Хотя тут и не только такого начитаться можно🔞
Сообщение от chapo
Как сделать такие кнопки? Если текст кнопки "/get", то все норм, но если изменить текст кнопки на "Узнать погоду", то бот ничего не отправляет в ответ
python:
Код:
@bot
.
message_handler
(
commands
=
[
'start'
]
)
def
start_command
(
message
)
:
keyboard
=
telebot
.
types
.
ReplyKeyboardMarkup
(
True
)
keyboard
.
row
(
'узнать погоду'
)
bot
.
send_message
(
message
.
chat
.
id
,
'Привет!'
,
reply_markup
=
keyboard
)
bot
.
send_message
(
message
.
chat
.
id
,
'Привет, ты запустил бота Chapos Weather Bot, напиши "/get" если хочешь узнать погоду (леха пасаси)'
)
@bot
.
message_handler
(
commands
=
[
'узнать погоду'
]
)
def
start_command
(
message
)
:
res
=
requests
.
get
(
api_url
+
'id='
+
cityid
+
'&units='
+
cf
+
'&APPID='
+
apikey
)
if
res
.
status_code
==
200
:
bot
.
send_message
(
message
.
chat
.
id
,
'Ожидание ответа от api.openweathermap.org...'
)
res_payload_dict
=
res
.
json
(
)
data
=
res
.
json
(
)
bot
.
send_message
(
message
.
chat
.
id
,
'Город: '
+
str
(
data
[
'name'
]
)
+
'\nТемпература: '
+
str
(
data
[
'main'
]
[
'temp'
]
)
+
' (ощущается как '
+
str
(
data
[
'main'
]
[
'feels_like'
]
)
+
')'
)
else
:
bot
.
send_message
(
message
.
chat
.
id
,
'Ошибка при обращении к API'
)
Посмотри на "свой" код, если у тебя полная паста, то возьми потрать 2 мин времени и открой доку к либе, которую используешь, питоновский код можно читать как книгу и я поражаюсь тому, как вы умудряетесь проебаться даже тут.. У тебя в хэндлере
-_-:
Код:
commands
=
[
'узнать погоду'
]
Вот и ждет твой телебот не сообщение с текстом узнать погоду, а сообщение с текстом /узнать погоду, потому что хэндлер у тебя на команду.
И вообще, пока не ушел далеко, очень советую
True way:
Код:
pip uninstall pyTelegramBotAPI
pip install aiogram
|
|
|
|
 |
Предыдущая тема
Следующая тема
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|