d = {1: 'Hi', 2: 'hello', 3: 'nice'}
def foo(s):
for key, value in d.items():
s = s.replace(str(key), value)
print(s)
foo('1')
foo('2')
foo('1 2 3')
foo('1-3')
@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)
# Ну и так далее...
@bot.message_handler(commands=['spam'])
def start_message(message):
bot.send_message(message.chat.id, 'Пиши что угодно')
@bot.message_handler(content_types=['text'])
def get_text(message):
text = message.text
markup = telebot.types.InlineKeyboardMarkup()
markup.add(telebot.types.InlineKeyboardButton(text='Десять', callback_data=10))
markup.add(telebot.types.InlineKeyboardButton(text='Пятьдесят', callback_data=50))
markup.add(telebot.types.InlineKeyboardButton(text='Сто', callback_data=100))
bot.send_message(message.chat.id, text="Выбери сколько раз повторить", reply_markup=markup)
@bot.callback_query_handler(func=lambda call: True)
def query_handler(call):
bot.answer_callback_query(callback_query_id=call.id, text='11111')
so = []
bot.send_message(message.chat.id, f'Пишем {call.data} раз')
for i in range(int(call.data)):
so.append(text)
sos = '\n'.join(so)
bot.send_message(call.message.chat.id, sos)
class func:
def __init__(self):
self.condition = 'вне контекста'
# функция описывает методы, вызываемые при старте контекстного менеджера
# Возвращаемое значение уходит в переменную var в конструкции 'with ... as var:'
def __enter__(self):
self.condition = 'в контексте'
return self
# Метод вызываемый в завершении конструкции with или при ошибке после нее
def __exit__(self, type, value, traceback):
pass
def __call__(self):
print(f'Выполнение функции {self.condition}')
out_context = func()
out_context()
print('-'*40)
with func() as inside_context:
inside_context()
Выполнение функции вне контекста
----------------------------------------
Выполнение функции в контексте
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('|')