brand = message.text
, brand было именем функции, а теперь стало именем какой-то строки. И когда во второй раз вы пытаетесь вызвать функцию brand, интерпретатор ругается на то, что это строка и вызвать ее нельзя.places = ["6-й микрорайон, 1 (Краснообск)", "Орджоникидзе, 30", "Кирова, 23",
"проспект Карла Маркса, 29", "Героев Революции, 64", "Орджоникидзе, 18",
"Никольский проспект, 1 (БЦ Кольцово)", "площадь Карла Маркса, 7 (Сан Сити)",
"Советская, 8", "Кошурникова, 33", "Большевистская, 45/1 (РЕКА)",
"Красный проспект, 157/1", "Красный проспект, 2/1", "Выставочная, 38/1",
"Военная, 5 (Аура)", "Дуси Ковальчук, 179/5 (БЦ Колибри)", "Богдана Хмельницкого, 27",
"Фрунзе, 242 (ДЦ Новая высота)", "Максима Горького, 53", "Дуси Ковальчук, 28д",
"Красный проспект, 101 (Ройял Парк)", "Светлановская, 50 (Большая Медведица)"]
a = 'a'
if a == 'a':
...
markup = telebot.types.ReplyKeyboardMarkup(resize_keyboard=True)
for place in places: # вот и пригодилась наша глобальная переменная (и без всяких global)
markup.add(telebot.types.KeyboardButton(place))
print('Кнопки добавлены!') # если тебе вообще это нужно
bot.send_message(message.chat.id, 'Пожалуйста, выбери кофейню, в которой ты сейчас находишься.', reply_markup=markup)
if message.text.strip() in places: # Оп! Опять пригодилось!
bot.send_message(message.chat.id, f"Отлично! Ты сейчас по адресу: {message.text.strip()}")
msg = bot.send_message(message.chat.id, 'Отлично! Ты сейчас в кофейне!\nЗначит тебе будет легче делать заказ!', reply_markup=telebot.types.ReplyKeyboardRemove())
import telebot
from telebot import types
API_TOKEN = ''
bot = telebot.TeleBot(API_TOKEN)
@bot.message_handler(func=lambda message: True)
def start(message):
msg = bot.reply_to(message, 'Проверка проброса параметра')
param = 23
bot.register_next_step_handler(msg, step, param)
def step(message, param):
bot.reply_to(message, f'{message.text}: {param}')
bot.infinity_polling()
@bot.message_handler(func=lambda message: message.text=='Привет')
def privet(message):
user_markup = telebot.types.ReplyKeyboardMarkup(True, False)
user_markup.row('Чат с работами', 'Показать новости')
user_markup.row('Оставить заявку на выполнение работы')
bot.send_message(message.from_user.id, "Выбери, что ты хочешь сделать.", reply_markup=user_markup)
@bot.message_handler(func=lambda message: message.text=='Чат с работами')
def chat_with_works(message):
markup = types.InlineKeyboardMarkup()
btn_my_site = types.InlineKeyboardButton(text='Чат с работами', url='https://t.me/AnonChanBot?start=-1001502978392')
markup.add(btn_my_site)
bot.send_message(message.chat.id, "Здесь вы можете присылать работы, которые давали вам преподаватели, чтобы облегчить жизнь тем, кому их ещё не давали. Ваши сообщения АНОНИМНЫ.", reply_markup=markup)
# Ну и так далее...
button_yes=types.InlineKeyboardButton(text='Принят',callback_data=f'yes|{message.chat.id}')
@bot.callback_query_handler(func=lambda call: True)
def callback_inline(call):
answer, user = call.data.split('|')
if answer=='yes':
bot.send_message(user,'Принято')
def get_keyboard(id: str):
buttons: list = [
types.InlineKeyboardButton(text='Редактировать', callback_data=f'edit|{id}'),
types.InlineKeyboardButton(text='Удалить', callback_data=f'del|{id}')
]
keyboard = types.InlineKeyboardMarkup(row_width=2)
keyboard.add(*buttons)
return keyboard
.....
async def list_tasks(message: types.Message):
user_id: int = message.from_user.id
lt: list = get_list_tasks(user_id)
if len(lt) == 0:
await message.answer('Ни одного таска ещё не создано.')
else:
for task in lt:
id = task[-1] # Ну или под каким индексом тут должен скрываться ID записи? Скорректируешь
await message.answer(f'{task[0]}\n\n{task[1]}\n\nid: {task[-1]}', reply_markup=get_keyboard(id))
command, id = call.data.split('|')
bot.register_next_step_handler(msg, phone)