Форум программистов, компьютерный форум, киберфорум
Python: API, боты
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
0 / 0 / 0
Регистрация: 02.09.2022
Сообщений: 7
Telegram API

Как получить доступ к Call.data на втором уровне вложенности?

30.10.2022, 14:25. Показов 1310. Ответов 1

Студворк — интернет-сервис помощи студентам
Привет! Я делаю бота с pytelegrambotapi, и хочу сделать возможной отправку сообщений в заранее указанное время
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
import telebot 
from config import token
from datetime import datetime
from random import randint
from config import quotes
import os
from telebot import TeleBot
from telebot import types
import time
import schedule
 
bot=telebot.TeleBot(token,parse_mode='html')
@bot.message_handler(commands=["start"])
def start_message(message):
    bot.reply_to(message,'<i> Привет, {0.first_name}!</i>'.format(message.from_user))
    daytime= types.InlineKeyboardMarkup()
    but1= types.InlineKeyboardButton('Утром', callback_data='утро')
    but2= types.InlineKeyboardButton('Днём', callback_data= 'день')
    but3= types.InlineKeyboardButton('Вечером', callback_data= 'вечер')
    daytime.add(but1,but2,but3)
    bot.reply_to(message,'Когда ты хочешь получать мои сообщения?', reply_markup= daytime)
 
 
 
@bot.callback_query_handler(func=lambda call: True)
def hour_changer(call):
    if call.data == 'утро':
        keyboard_morning= types.InlineKeyboardMarkup()
        m_bt1= types.InlineKeyboardButton('06:00', callback_data ='06:00')
        m_bt2= types.InlineKeyboardButton('07:00', callback_data ='07:00')
        m_bt3= types.InlineKeyboardButton('08:00', callback_data ='08:00')
        m_bt4= types.InlineKeyboardButton('09:00', callback_data ='09:00')
        m_bt5= types.InlineKeyboardButton('10:00', callback_data ='10:00')
        m_bt6= types.InlineKeyboardButton('11:00', callback_data ='11:00')
        m_bt7= types.InlineKeyboardButton('12:00', callback_data ='12:00')
        keyboard_morning.add(m_bt1, m_bt2, m_bt3, m_bt4, m_bt5, m_bt6, m_bt7)
        bot.answer_callback_query(call.id, 'Выбери удобное время')
        bot.edit_message_text(chat_id= call.message.chat.id, message_id= call.message.message_id, text= 'Выбери удобное время', reply_markup= keyboard_morning)
    
    
    elif call.data == 'день':
        keyboard_day= types.InlineKeyboardMarkup()
        d_bt1= types.InlineKeyboardButton('13:00', callback_data = '13:00')
        d_bt2= types.InlineKeyboardButton('14:00', callback_data = '14:00')
        d_bt3= types.InlineKeyboardButton('15:00', callback_data = '15:00')
        d_bt4= types.InlineKeyboardButton('16:00', callback_data = '16:00')
        d_bt5= types.InlineKeyboardButton('17:00', callback_data = '17:00')
        d_bt6= types.InlineKeyboardButton('18:00', callback_data = '18:00')
        keyboard_day.add(d_bt1, d_bt2, d_bt3, d_bt4, d_bt5, d_bt6)
        bot.answer_callback_query(call.id, 'Выбери удобное время')
        bot.edit_message_text(chat_id= call.message.chat.id, message_id= call.message.message_id, text= 'Выбери удобное время', reply_markup= keyboard_day)
 
    elif call.data == 'вечер':
        keyboard_evening= types.InlineKeyboardMarkup()
        e_bt1= types.InlineKeyboardButton('19:00', callback_data= '19:00')
        e_bt2= types.InlineKeyboardButton('20:00', callback_data= '20:00')
        e_bt3= types.InlineKeyboardButton('21:00', callback_data= '21:00')
        e_bt4= types.InlineKeyboardButton('22:00', callback_data= '22:00')
        e_bt5= types.InlineKeyboardButton('23:00', callback_data= '23:00')
        keyboard_evening.add(e_bt1, e_bt2, e_bt3, e_bt4, e_bt5)
        bot.answer_callback_query(call.id, 'Выбери удобное время')
        bot.edit_message_text(chat_id= call.message.chat.id, message_id= call.message.message_id, text= 'Выбери удобное время', reply_markup= keyboard_evening)
 
    @bot.callback_query_handler(func=lambda call: True)
    def confirm(call):
        if call.data=='06:00':
            bot.edit_message_text(chat_id= call.message.chat.id, message_id= call.message.message_id, text=f'Хорошо! Я буду присылать уведомления каждый день ровно в {call.data}')
            def send_qoute(message):
                bot.send_message(message.chat.id,quotes[randint(0,100)] )
                bot.answer_callback_query(call.id)
schedule.every().day.at(int(x)).do(send_quote())
while True:
    schedule.run_pending()
    time.sleep(60)

Мои вопросы в следующем:
Как сделать второй уровень вложенности?
Как вытащить значение времени и присвоить его переменной, чтобы затем использовать в модуле schedule? Заранее спасибо
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
30.10.2022, 14:25
Ответы с готовыми решениями:

QFileSystemModel + QTreeView, не удаётся получить доступ начиная со второго уровня вложенности
Создаю модель QFileSystemModel, назначаю её на QTreeView. Пример на скриншоте: http://i.**********/J23pPRT.png Хочу получить имена...

Получить доступ к Application Data
Добрый день. Подскажите, пожалуйста, как прочитать и записать файл из директории Application Data. Там планирую хранить настройки...

Количество атомов на каждом уровне вложенности
Здравствуйте! Собственно, задача состоит в том, чтобы сформировать список следующего вида: ((lvl1 cnt1) (lvl2 cnt2 ... (lvln cntn))), где...

1
8 / 6 / 2
Регистрация: 29.08.2022
Сообщений: 54
09.11.2022, 10:46
а что такое второй уровень вложенности?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
09.11.2022, 10:46
Помогаю со студенческими работами здесь

Информация о количестве подсписков на каждом уровне вложенности
Всем привет. Написать функцию, возвращающую список, содержащий информацию о количестве подсписков на каждом уровне вложенности:...

Определить, сколько атомов находится на заданном уровне вложенности.
Определить, сколько атомов находится на заданном уровне вложенности. Элемент может быть как атомом, так и списком. Прокомментируйте код: ...

Вложеные списки: подсчитать сумму элементов на 2-ом и 4-ом уровне вложенности
Подсчитать суму элементов на 2-ом и 4-ом уровне вложенности. Можно ли вообще создать предикат для подсчета сумы элементов на заданном...

Получить доступ к открытым свойствам класса Data из Form1, fun1.
Добрый день. Нужно получить доступ к открытым свойствам класса Data из Form1, fun1. Как выглядит синтаксис такого доступа? public...

Написать программу, возвращающую список, содержащий информацию о количестве подсписков на каждом уровне вложенности
Пожалуйста подскажите, необходимо просто подсчитать кол-во букв или цифр, вообщем символов. здесь необязательно использовать numberp, как...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru