Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 1, 2023 15:21:09

Anastasia_ushhkva
Зарегистрирован: 2023-12-01
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Здравствуйте! Подскажите пожалуйста, почему при вызове кнопки функции не работают

Когда заходишь в Телеграм и нажимаешь именно на кнопку “Новое напоминание” ничего не происходит, хотя вроде связь между функциями new_reminder, get_name есть… Может связь выстроена неверно?

import sqlite3
import threading
import time
from telegram.ext import (Updater, ConversationHandler, CommandHandler, MessageHandler, Filters)
import telebot
from telebot import types

TOKEN = ‘ ’
bot = telebot.TeleBot(TOKEN)
bd = sqlite3.connect('remindnotes.db', check_same_thread=False)
cursor = bd.cursor()

with open('remind.sql', ‘r’) as f:
sql = f.read()
bd.commit()

updater = Updater(TOKEN, use_context=True)
disp = updater.dispatcher
current_name = None
current_date = None

@bot.message_handler(commands
def send_keyboard(message, text='Привет, чем я могу тебе помочь?'):
keyboard = types.ReplyKeyboardMarkup(row_width=2)
itembtn1 = types.KeyboardButton('Добавить новую заметку')
itembtn2 = types.KeyboardButton('Новое напоминание')
itembtn3 = types.KeyboardButton('Все заметки')
itembtn4 = types.KeyboardButton('Удалить заметку')
itembtn5 = types.KeyboardButton('Удалить все заметки')
itembtn6 = types.KeyboardButton('Другое')
itembtn7 = types.KeyboardButton('Пока все!')
keyboard.add(itembtn1, itembtn2, itembtn3)
keyboard.add(itembtn4, itembtn5, itembtn6, itembtn7)

msg = bot.send_message(message.from_user.id, text=text, reply_markup=keyboard)
bot.register_next_step_handler(msg, callback_worker)
def callback_worker(call):
if call.text == ‘Добавить новую заметку’:
msg = bot.send_message(call.chat.id, ‘Давайте добавим дело! Пришлите его в наш чат..’)
bot.register_next_step_handler(msg, add_plan)
elif call.text == ‘Все заметки’:
try:
show_plans(call)
except:
bot.send_message(call.chat.id, ‘Здесь пусто.. Можно отдыхать)’)
send_keyboard(call, ‘Чем еще могу помочь?’)
elif call.text == ‘Новое напоминание’:
msg = bot.send_message(call.chat.id, ‘Давайте добавим напоминание! Напишите в чат /new, чтобы добавить новую задачу’)
bot.register_next_step_handler(msg, conv_handler)
elif call.text == ‘Удалить заметку’:
try:
delete_one_plan(call)
except:
bot.send_message(call.chat.id, ‘Здесь пусто.. Можно отдыхать)’)
send_keyboard(call, ‘Чем еще могу помочь?’)
elif call.text == ‘Удалить все заметки’:
try:
delete_all_plans(call)
except:
bot.send_message(call.chat.id, ‘Здесь пусто.. Можно отдыхать)’)
send_keyboard(call, ‘Чем еще могу помочь?’)

elif call.text == ‘Другое’:
bot.send_message(call.chat.id, ‘Пока я больше ничего не умею(’)
send_keyboard(call, ‘Чем еще могу помочь?’)
elif call.text == ‘Пока все!’:
bot.send_message(call.chat.id, ‘Хорошего дня! Когда захотите продолжить - нажмите /start ’)
def add_plan(msg):
with sqlite3.connect('remindnotes.db') as con:
cursor = con.cursor()
cursor.execute('INSERT INTO planner (user_id, plan) VALUES (?, ?)', (msg.from_user.id, msg.text))
con.commit()
bot.send_message(msg.chat.id, ‘Запомню!’)
send_keyboard(msg, ‘Чем еще могу помочь?’)
def delete_one_plan(msg):
markup = types.ReplyKeyboardMarkup(row_width=2)
with sqlite3.connect('remindnotes.db') as con:
cursor = con.cursor()
cursor.execute('SELECT plan FROM planner WHERE user_id=={}'.format(msg.from_user.id))
tasks = cursor.fetchall()
for value in tasks:
markup.add(types.KeyboardButton(value))
msg = bot.send_message(msg.from_user.id, text = ‘Выберите одно дело из списка’, reply_markup=markup)
bot.register_next_step_handler(msg, delete_one_plan_1)
def delete_one_plan_1(msg):
with sqlite3.connect('remindnotes.db') as con:
cursor = con.cursor()
cursor.execute('DELETE FROM planner WHERE user_id==? AND plan==?', (msg.from_user.id, msg.text))
bot.send_message(msg.chat.id, ‘Ура, минус одна задача!’)
send_keyboard(msg, ‘Чем еще могу помочь?’)
def delete_all_plans(msg):
with sqlite3.connect('remindnotes.db') as con:
cursor = con.cursor()
cursor.execute('DELETE FROM planner WHERE user_id=={}'.format(msg.from_user.id))
con.commit()
bot.send_message(msg.chat.id, ‘Все дела удалены, хорошего отдыха!’)
send_keyboard(msg, ‘Могу ли я еще чем то помочь?’)
def get_plans_string(tasks):
tasks_str =
for val in list(enumerate(tasks)):
tasks_str.append(str(val + 1) + ‘) ’ +val + ‘\n’ )
return ‘'.join(tasks_str)
def show_plans(msg):
with sqlite3.connect(’remindnotes.db') as con:
cursor = con.cursor()
cursor.execute('SELECT plan FROM planner WHERE user_id=={}'.format(msg.from_user.id))
tasks = get_plans_string(cursor.fetchall())
bot.send_message(msg.chat.id, tasks)
send_keyboard(msg, ‘Чем еще могу помочь?’)

def new_reminder(msg):
msg.message.reply_text('О чем напоминить?')
return 1
def get_name(msg):
global current_name
msg.message.reply_text('Напиши дату в формате ГОД-МЕСЯЦ-ДЕНЬ')
return 2

def get_date(msg):
global current_date
global cursor
current_date = update.message.text
user_id = update.message.chat_id
cursor.execute('SELECT * FROM user WHERE id=?', (user_id,))
if not cursor.fetchone():
cursor.execute('INSERT INTO user (id) VALUES (?)', (user_id,))
cursor.execute('INSERT INTO remind_me (user_id, note, date, reminded) VALUES (?, ?, ?, ?)',
(user_id, current_name, current_date, 0))
bd.commit()
msg.message.reply_text('Я напомню тебе!')
return ConversationHandler.END

def cancel():
pass

def do_reminders():
while True:
# today = dt.date.today().strftime('%Y-%m-%d')
cursor.execute('SELECT * FROM remind_me WHERE strftime(“%d”, date) = strftime(“%d”, “now”)'
‘AND strftime(“%m”, “now”) AND reminded = 0’)
rows = cursor.fetchall()
for row in rows:
row_id = row
note = row
user_id = row
updater.bot.send_message(chat_id=user_id, text =f'Время для выполнения задачи {note}!')
cursor.execute('UPDATE remind_me SET reminded = 1 WHERE id = ?', (row_id,))
bd.commit()
time.sleep(10)

conv_handler = ConversationHandler(
entry_points=,
states = {
1: ,
2:
},
fallbacks=
)


threading.Thread(target=do_reminders).start()

bot.polling(none_stop=True)

Отредактировано Anastasia_ushhkva (Дек. 1, 2023 15:21:59)

Офлайн

#2 Дек. 2, 2023 13:30:54

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9867
Репутация: +  853  -
Профиль   Отправить e-mail  

Здравствуйте! Подскажите пожалуйста, почему при вызове кнопки функции не работают

Оформи код правильно.

[code python]
тут пиши код
[/code]



Офлайн

#3 Дек. 2, 2023 16:40:20

Anastasia_ushhkva
Зарегистрирован: 2023-12-01
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Здравствуйте! Подскажите пожалуйста, почему при вызове кнопки функции не работают

 import sqlite3
import threading
import time
from telegram.ext import (Updater, ConversationHandler, CommandHandler, MessageHandler, Filters)
import telebot
from telebot import types
TOKEN =  
bot = telebot.TeleBot(TOKEN)
bd = sqlite3.connect('remindnotes.db', check_same_thread=False)
cursor = bd.cursor()
with open('remind.sql', r) as f:
sql = f.read()
bd.commit()
updater = Updater(TOKEN, use_context=True)
disp = updater.dispatcher
current_name = None
current_date = None
@bot.message_handler(commands
def send_keyboard(message, text='Привет, чем я могу тебе помочь?'):
keyboard = types.ReplyKeyboardMarkup(row_width=2)
itembtn1 = types.KeyboardButton('Добавить новую заметку')
itembtn2 = types.KeyboardButton('Новое напоминание')
itembtn3 = types.KeyboardButton('Все заметки')
itembtn4 = types.KeyboardButton('Удалить заметку')
itembtn5 = types.KeyboardButton('Удалить все заметки')
itembtn6 = types.KeyboardButton('Другое')
itembtn7 = types.KeyboardButton('Пока все!')
keyboard.add(itembtn1, itembtn2, itembtn3)
keyboard.add(itembtn4, itembtn5, itembtn6, itembtn7)
msg = bot.send_message(message.from_user.id, text=text, reply_markup=keyboard)
bot.register_next_step_handler(msg, callback_worker)
def callback_worker(call):
if call.text == ‘Добавить новую заметку’:
msg = bot.send_message(call.chat.id, ‘Давайте добавим дело! Пришлите его в наш чат..)
bot.register_next_step_handler(msg, add_plan)
elif call.text == ‘Все заметки’:
try:
show_plans(call)
except:
bot.send_message(call.chat.id, ‘Здесь пусто.. Можно отдыхать))
send_keyboard(call, ‘Чем еще могу помочь?’)
elif call.text == ‘Новое напоминание’:
msg = bot.send_message(call.chat.id, ‘Давайте добавим напоминание! Напишите в чат /new, чтобы добавить новую задачу’)
bot.register_next_step_handler(msg, conv_handler)
elif call.text == ‘Удалить заметку’:
try:
delete_one_plan(call)
except:
bot.send_message(call.chat.id, ‘Здесь пусто.. Можно отдыхать))
send_keyboard(call, ‘Чем еще могу помочь?’)
elif call.text == ‘Удалить все заметки’:
try:
delete_all_plans(call)
except:
bot.send_message(call.chat.id, ‘Здесь пусто.. Можно отдыхать))
send_keyboard(call, ‘Чем еще могу помочь?’)
elif call.text == ‘Другое’:
bot.send_message(call.chat.id, ‘Пока я больше ничего не умею()
send_keyboard(call, ‘Чем еще могу помочь?’)
elif call.text == ‘Пока все!’:
bot.send_message(call.chat.id, ‘Хорошего дня! Когда захотите продолжить - нажмите /start )
def add_plan(msg):
with sqlite3.connect('remindnotes.db') as con:
cursor = con.cursor()
cursor.execute('INSERT INTO planner (user_id, plan) VALUES (?, ?)', (msg.from_user.id, msg.text))
con.commit()
bot.send_message(msg.chat.id, ‘Запомню!’)
send_keyboard(msg, ‘Чем еще могу помочь?’)
def delete_one_plan(msg):
markup = types.ReplyKeyboardMarkup(row_width=2)
with sqlite3.connect('remindnotes.db') as con:
cursor = con.cursor()
cursor.execute('SELECT plan FROM planner WHERE user_id=={}'.format(msg.from_user.id))
tasks = cursor.fetchall()
for value in tasks:
markup.add(types.KeyboardButton(value))
msg = bot.send_message(msg.from_user.id, text = ‘Выберите одно дело из списка’, reply_markup=markup)
bot.register_next_step_handler(msg, delete_one_plan_1)
def delete_one_plan_1(msg):
with sqlite3.connect('remindnotes.db') as con:
cursor = con.cursor()
cursor.execute('DELETE FROM planner WHERE user_id==? AND plan==?', (msg.from_user.id, msg.text))
bot.send_message(msg.chat.id, ‘Ура, минус одна задача!’)
send_keyboard(msg, ‘Чем еще могу помочь?’)
def delete_all_plans(msg):
with sqlite3.connect('remindnotes.db') as con:
cursor = con.cursor()
cursor.execute('DELETE FROM planner WHERE user_id=={}'.format(msg.from_user.id))
con.commit()
bot.send_message(msg.chat.id, ‘Все дела удалены, хорошего отдыха!’)
send_keyboard(msg, ‘Могу ли я еще чем то помочь?’)
def get_plans_string(tasks):
tasks_str =
for val in list(enumerate(tasks)):
tasks_str.append(str(val + 1) + )  +val + \n )
return '.join(tasks_str)
def show_plans(msg):
with sqlite3.connect(remindnotes.db') as con:
cursor = con.cursor()
cursor.execute('SELECT plan FROM planner WHERE user_id=={}'.format(msg.from_user.id))
tasks = get_plans_string(cursor.fetchall())
bot.send_message(msg.chat.id, tasks)
send_keyboard(msg, ‘Чем еще могу помочь?’)
def new_reminder(msg):
msg.message.reply_text('О чем напоминить?')
return 1
def get_name(msg):
global current_name
msg.message.reply_text('Напиши дату в формате ГОД-МЕСЯЦ-ДЕНЬ')
return 2
def get_date(msg):
global current_date
global cursor
current_date = update.message.text
user_id = update.message.chat_id
cursor.execute('SELECT * FROM user WHERE id=?', (user_id,))
if not cursor.fetchone():
cursor.execute('INSERT INTO user (id) VALUES (?)', (user_id,))
cursor.execute('INSERT INTO remind_me (user_id, note, date, reminded) VALUES (?, ?, ?, ?)',
(user_id, current_name, current_date, 0))
bd.commit()
msg.message.reply_text('Я напомню тебе!')
return ConversationHandler.END
def cancel():
pass
def do_reminders():
while True:
# today = dt.date.today().strftime('%Y-%m-%d')
cursor.execute('SELECT * FROM remind_me WHERE strftime(“%d”, date) = strftime(“%d”, “now”)'
AND strftime(%m, now) AND reminded = 0)
rows = cursor.fetchall()
for row in rows:
row_id = row
note = row
user_id = row
updater.bot.send_message(chat_id=user_id, text =f'Время для выполнения задачи {note}!')
cursor.execute('UPDATE remind_me SET reminded = 1 WHERE id = ?', (row_id,))
bd.commit()
time.sleep(10)
conv_handler = ConversationHandler(
entry_points=,
states = {
1: ,
2:
},
fallbacks=
)
threading.Thread(target=do_reminders).start()
bot.polling(none_stop=True)

Отредактировано Anastasia_ushhkva (Дек. 2, 2023 16:41:10)

Офлайн

#4 Дек. 2, 2023 16:47:42

ZerG
Зарегистрирован: 2012-04-05
Сообщения: 2627
Репутация: +  61  -
Профиль   Отправить e-mail  

Здравствуйте! Подскажите пожалуйста, почему при вызове кнопки функции не работают

Код выложи сюда
https://pastebin.com/
и нам покажи ссылку
Код копируй с отступами и так далее
Читать вашу простыню нет не желания ни настроения
Тем более угадывать где и сколько у вас отступов и почему не срабатывает условие



Влодение рускай арфаграфией - это как владение кунг-фу: настаящие мастира не преминяют ево бес ниабхадимости

Офлайн

#5 Дек. 2, 2023 17:27:57

Anastasia_ushhkva
Зарегистрирован: 2023-12-01
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Здравствуйте! Подскажите пожалуйста, почему при вызове кнопки функции не работают

Офлайн

#6 Дек. 2, 2023 17:55:26

ZerG
Зарегистрирован: 2012-04-05
Сообщения: 2627
Репутация: +  61  -
Профиль   Отправить e-mail  

Здравствуйте! Подскажите пожалуйста, почему при вызове кнопки функции не работают

Ну так кнопка “Новое напоминание” запускает функцию

 create_new(call)
дабы убедится что это так - добавьте после функции принт
print(“create_new runned”)
а дальше

 @bot.message_handler(commands=['new'])
def create_new(update):
    bot.send_message(update.chat.id, 'Нажми /remindme для добавления задачи')
Для чего тут хендлер?



Влодение рускай арфаграфией - это как владение кунг-фу: настаящие мастира не преминяют ево бес ниабхадимости

Офлайн

#7 Дек. 3, 2023 20:45:56

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9867
Репутация: +  853  -
Профиль   Отправить e-mail  

Здравствуйте! Подскажите пожалуйста, почему при вызове кнопки функции не работают

Anastasia_ushhkva
  
import sqlite3
...

Вот этот участок кода
  
@bot.message_handler(commands=['new'])
def create_new(update):
    bot.send_message(update.chat.id, 'Нажми /remindme для добавления задачи')

Замени на такой участок кода
  
#@bot.message_handler(commands=['new'])
def create_new(update):
    bot.send_message(update.chat.id, 'Нажми /remindme для добавления задачи')

Запусти это всё и попробуй кнопку нажать “Новое напоминание”.



Офлайн

#8 Дек. 4, 2023 19:34:16

Anastasia_ushhkva
Зарегистрирован: 2023-12-01
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Здравствуйте! Подскажите пожалуйста, почему при вызове кнопки функции не работают

Спасибо большое за ответ, но ничего не изменилось - по прежнему при нажатии стопорится процесс

Отредактировано Anastasia_ushhkva (Дек. 4, 2023 19:34:41)

Офлайн

#9 Дек. 5, 2023 09:26:23

ZerG
Зарегистрирован: 2012-04-05
Сообщения: 2627
Репутация: +  61  -
Профиль   Отправить e-mail  

Здравствуйте! Подскажите пожалуйста, почему при вызове кнопки функции не работают

 #@bot.message_handler(commands=['new'])
def create_new(update):
    print("I am here")
    #bot.send_message(update.chat.id, 'Нажми /remindme для добавления задачи')

Если так сделать - выводится сообщение при нажатии?



Влодение рускай арфаграфией - это как владение кунг-фу: настаящие мастира не преминяют ево бес ниабхадимости

Офлайн

#10 Дек. 6, 2023 00:25:17

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9867
Репутация: +  853  -
Профиль   Отправить e-mail  

Здравствуйте! Подскажите пожалуйста, почему при вызове кнопки функции не работают

Anastasia_ushhkva
Спасибо большое за ответ, но ничего не изменилось
При нажатии на кнопку должно выводиться сообщение только
Нажми /remindme для добавления задачи
Там просто больше ничего нет в этом обработчике нажатия на кнопку.



Отредактировано py.user.next (Дек. 6, 2023 00:25:38)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version