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

  #1  
Старый 04.09.2021, 16:05
chapo
Флудер
Регистрация: 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'
)
 
Ответить с цитированием

  #2  
Старый 04.09.2021, 16:50
dalbaebebannuy
Новичок
Регистрация: 03.08.2021
Сообщений: 1
С нами: 2516120

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

у тебя должен быть callback на кнопку
 
Ответить с цитированием

  #3  
Старый 04.09.2021, 19:45
chapo
Флудер
Регистрация: 10.10.2016
Сообщений: 9,228
С нами: 5046982

Репутация: 183


По умолчанию

Цитата:
Сообщение от dalbaebebannuy  

у тебя должен быть callback на кнопку
как его создать? в гайдах не нашел
 
Ответить с цитированием

  #4  
Старый 04.09.2021, 20:03
Rei
Познавший АНТИЧАТ
Регистрация: 18.06.2017
Сообщений: 1,632
С нами: 4686777

Репутация: 183


По умолчанию

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

  #5  
Старый 04.09.2021, 20:59
pomidorq
Участник форума
Регистрация: 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"""
 
Ответить с цитированием

  #6  
Старый 04.09.2021, 21:30
Neon3333
Участник форума
Регистрация: 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)
 


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




ANTICHAT ™ © 2001- Antichat Kft.