...
elif message.text == ' Регистрация велосипеда ':
markup = types.ReplyKeyboardMarkup(resize_keyboard=True, row_width=2)
btn1 = types.KeyboardButton(' Где наша мастерская? ')
btn2 = types.KeyboardButton(' Посмотреть прайс на ремонт ')
btn3 = types.KeyboardButton(' Наши контакты ')
btn4 = types.KeyboardButton('⏭ Далее ⏭')
markup.add(btn1, btn2, btn3, btn4)
bot.send_message(message.chat.id, 'Давайте запишем Ваш байк в базу данных.', reply_markup=markup)
markup_inline = types.InlineKeyboardMarkup()
# Обратите внимание на callback_data при создании кнопки
bk1 = types.InlineKeyboardButton(text='Stels', callback_data='bike_model|Stels')
bk2 = types.InlineKeyboardButton(text='Forvard', callback_data='bike_model|Forvard')
bk3 = types.InlineKeyboardButton(text='Кама', callback_data='bike_model|Кама')
bk4 = types.InlineKeyboardButton(text='Урал', callback_data='bike_model|Урал')
markup_inline.add(bk1, bk2, bk3, bk4)
bot.send_message(message.chat.id, 'Выберите модель', reply_markup=markup_inline)
# На случай, если у вас будут еще какие-либо инлайн кнопки,
# этот хендлер сработает только на тех, у которых callback_data начинается с bike_model
@bot.callback_query_handler(func=lambda call: call.data.startswith('bike_model'))
def reg(call):
# получаем модель велика
bike_model = call.data.split('|')[1]
chat_id = call.message.chat.id
conn = sqlite3.connect('db.db')
cursor = conn.cursor()
cursor.execute(f"UPDATE users SET brand = {bike_model} WHERE chat_id = {chat_id}")
conn.commit()
conn.close()
bot.send_message(chat_id, f'Записали!\nИдем дальше.')
mes = bot.send_message(chat_id, 'Введите серийный номер')
bot.register_next_step_handler(mes, serial_number)
def serial_number(message):
...
all([a, b, c])
def foo(name, last_name, age, email):
return f'{name}, {last_name}, {age}, {email}'
try:
foo('Vasya')
except TypeError as e:
error_text = e.args[0] # или error_text = str(e)
print(error_text)
error_text.split(':')
или еще как хотите. s = 'Вот какая-то длинная строка, ниже я установил лимит. Строка разбивается на подстроки по длине не превосходящей этот лимит.'
limit = 20
def foo(s, limit):
rows=[]
current_row=[]
length=0
lst = s.split()
for word in lst:
if limit <= (length + len(word) + 1):
rows.append(' '.join(current_row))
current_row=[word]
length = len(word)+1
else:
length += len(word)+1
current_row.append(word)
rows.append(' '.join(current_row))
return('\n'.join(rows))
print(foo(s, limit))
import telebot
bot = telebot.TeleBot(token='XXXXXXXXXXXXXXXXXXXX')
@bot.message_handler(content_types=["text"])
def get_text_messages(message):
if message.text == "Привет":
bot.send_message(message.from_user.id, "Начнем")
start(message)
elif message.text == "/help":
bot.send_message(message.from_user.id, "Напиши Привет")
else:
bot.send_message(message.from_user.id, "Я тебя не понимаю. Напиши /help.")
# Точка старта.
def start(message):
# Инициализируем наш словарь, который будем прокидывать в каждую функцию
data = {}
mes = bot.send_message(message.from_user.id, "Введите количество бриллиантов:")
bot.register_next_step_handler(mes, vvod_brill, data)
# Получаем бриллианты
def vvod_brill(message, data):
if not message.text.isdigit():
bot.send_message(message.from_user.id, "Нужно ввести число")
bot.register_next_step_handler(message, vvod_brill, data)
else:
brill_count = int(message.text)
data['brill_count'] = brill_count
bot.send_message(message.from_user.id, f"Получено бриллиантов: {brill_count}")
bot.send_message(message.from_user.id, "Введите количество рубинов:")
bot.register_next_step_handler(message, vvod_rub, data)
# Получаем рубины
def vvod_rub(message, data):
if not message.text.isdigit():
bot.send_message(message.from_user.id, "Нужно ввести число")
bot.register_next_step_handler(message, vvod_rub, data)
else:
rub_count = int(message.text)
data['rub_count'] = rub_count
bot.send_message(message.from_user.id, f"Получено рубинов: {rub_count}")
bot.send_message(message.from_user.id, "Введите количество жителей:")
bot.register_next_step_handler(message, vvod_jit, data)
# Получаем количество жителей
def vvod_jit(message, data):
if not message.text.isdigit():
bot.send_message(message.from_user.id, "Нужно ввести число")
bot.register_next_step_handler(message, vvod_jit, data)
else:
jit_count = int(message.text)
data['jit_count'] = jit_count
bot.send_message(message.from_user.id, f"Всего жителей: {jit_count}")
counter = 1
bot.send_message(message.from_user.id, f"Сколько заработал кубков житель {counter}?")
bot.register_next_step_handler(message, vvod_cubok, data, counter)
# Получаем количество кубков для каждого
def vvod_cubok(message, data, counter):
if not message.text.isdigit():
bot.send_message(message.from_user.id, "Нужно ввести число")
bot.register_next_step_handler(message, vvod_cubok, data, counter)
else:
cubok_count = int(message.text)
data[f'jit_{counter}_cubok'] = cubok_count
bot.send_message(message.from_user.id, f"Житель {counter} заработал {cubok_count} кубков")
counter += 1
if counter <= data['jit_count']:
bot.send_message(message.from_user.id, f"Сколько заработал кубков житель {counter}?")
bot.register_next_step_handler(message, vvod_cubok, data, counter)
else:
bot.send_message(message.from_user.id, 'А теперь посмотрим что у нас вышло')
bot.send_message(message.from_user.id, f'{data}')
if __name__ == '__main__':
bot.polling()
import calendar
import datetime
def weekdays(input_day):
my_day = datetime.date.fromisoformat(input_day)
c = calendar.Calendar()
for week in c.monthdatescalendar(2022, 4):
if my_day in week:
return[f'{weekday.year}-{weekday.month}-{weekday.day}' for weekday in week]
print(weekdays('2022-04-03'))
my_day = datetime.date.fromisoformat(input_day)
year, month, day = map(int, input_day.split('-'))
my_day = datetime.date(year, month, day)
async def set_state(peer_id, lvl):
states = {
2: func.Data.SecondLvl,
3: func.Data.ThirdLvl,
4: func.Data.FourthLvl,
5: func.Data.FifthLvl,
6: func.Data.SixthLvl,
7: func.Data.SeventhLvl
}
await bot.state_dispenser.set(peer_id, states[lvl])
@bot.on.private_message(payload = {"cmd":"yeslvlup"})
async def yeslvlup(message: Message):
lvl = 1+base.output_lvl(message.peer_id)
base.input_lvl(message.peer_id,lvl)
await set_state(message.peer_id, lvl)
await message.text(
"Уровень повышен",
keyboard = Keyboard(one_time = True)
.add(Text("Продолжить"), color = KeyboardButtonColor.PRIMARY)
)
# conftest.py
@pytest.fixture
def a_fixture():
return 'a'
@pytest.fixture
def b_fixture():
return 'b'
# модуль с тестами
@mark.parametrize('data_param, expected', [('a_fixture', 'a'), ('b_fixture', 'b')])
def test_sample(data_param, expected, request: pytest.FixtureRequest):
data = request.getfixturevalue(data_param)
assert data == expected