Задать вопрос
  • Как оптимизировать запросы в postgresql?

    @codexim Автор вопроса
    напиши это в решения, я отмечу
  • Не работает input в vs code?

    @codexim Автор вопроса
    проблему с иероглифами решил, а вот input по прежнему отказывается работать :(
  • Не работает input в vs code?

    @codexim Автор вопроса
    спасибо, но не помогло
  • Как добавить в базу данных SQLite3 id пользователя и введенное им сообщение?

    @codexim Автор вопроса
    спасибо! вот такой получился. может кому пригодится
    import sqlite3
    import telebot
    
    bot = telebot.TeleBot("token")
    
    conn = sqlite3.connect('database.db',check_same_thread=False)
    cursor = conn.cursor()
    
    
    def db_table_val(us_id,text):
        cursor.execute('INSERT INTO test (us_id, text) VALUES (?, ?)',
                       (us_id,text))
        conn.commit()
    def db_table_val1(text):
        cursor.execute('INSERT INTO test (text) VALUES(?)',(text,))
        conn.commit()
    @bot.message_handler(content_types=['text'])
    def get_text_messages(message):
        if message.text.lower() == '/reg' or message.text.lower() == '/help':
            bot.send_message(message.chat.id, 'success')
            text = message.text
            us_id = message.from_user.id
            check = cursor.execute('SELECT * FROM test WHERE us_id=?', (us_id,))
            if check.fetchone() is None:
                db_table_val(us_id, text)
            else:
                delete="""DELETE from test where us_id = ?"""
                cursor.execute(delete, (us_id,))
                conn.commit()
                db_table_val(us_id,text)
    bot.infinity_polling()
  • Как сделать общего телеграм бота?

    @codexim Автор вопроса
    спасибо большое, попробую бд, если будут вопросы напишу! :)
  • Как сделать общего телеграм бота?

    @codexim Автор вопроса
    спасибо, эта проблема решилась :) возникла другая. пример: пользователь A вводит текст напоминания и пользователь Б вводит текст напоминания. Но почему то у обоих пользователей приходит тот текст напоминания, который был задан раньше (т.е текст пользователя А так как он ввел раньше) как решить такую проблему? Бд надо какую то вводить? Код в итоге такой получился

    import telebot
    from telebot import types
    import time
    msup=['/min','/day','/hour','/help','/start','/n','/notify']
    bot = telebot.TeleBot('token')
    sup=[1]
    sup1=[]
    sup2=['1','2','3','4']
    sup3=[2,3,4]
    sup4=[5,6,7,8,9,0]
    @bot.message_handler(commands=['start', 'help'])
    def welcome(message):
    	bot.send_message(message.chat.id, 'Вас приветствует NotifyBot(бот-напоминание)\n'
    										   'Бот предназначен для создания напоминаний.\n'
    										   'Чтобы начать введите /notify или /n')
    @bot.message_handler(commands=['n', 'notify'])
    def request(message):
    	bot.send_message(message.chat.id, 'О чем напомнить?')
    	bot.register_next_step_handler(message,choose)
    def choose(message):
    	req=message.text
    	sup.append(req)
    	if sup[0] in msup:
    		bot.send_message(message.from_user.id,'Для начала введите текст будущего уведомления!')
    		sup.remove(sup[0])
    		bot.register_next_step_handler(message,choose)
    	else:
    		ed_iden = 'Выберите единицу времени:'
    		keyboard = types.InlineKeyboardMarkup()
    		key_hour = types.InlineKeyboardButton(text='Минуты', callback_data='min')
    		key_min = types.InlineKeyboardButton(text='Часы', callback_data='hour')
    		key_day = types.InlineKeyboardButton(text='Дни', callback_data='days')
    		keyboard.add(key_min,key_hour,key_day)
    		bot.send_message(message.chat.id, text=ed_iden, reply_markup=keyboard)
    @bot.callback_query_handler(func=lambda call: True)
    def choose_1(call):
    	if call.data=='min':
    		bot.send_message(call.message.chat.id,'Введите целое количество минут.')
    		bot.register_next_step_handler(call.message, mins)
    	elif call.data=='hour':
    		bot.send_message(call.message.chat.id,'Введите целое количество часов.')
    		bot.register_next_step_handler(call.message, hour)
    	elif call.data == 'days':
    		bot.send_message(call.message.chat.id, 'Введите целое количество дней.')
    		bot.register_next_step_handler(call.message, day)
    def mins(call):
    	text = call.text
    	if text=='1':
    		end='минуту'
    	elif int(text) in sup3:
    		end='минуты'
    	elif int(text)>4 and int(text)<20 or int(text)//10>1 and int(text)%10 in sup4:
    		end='минут'
    	else:
    		end='минуты'
    	kolvo=int(text)
    	bot.send_message(call.chat.id, 'Я напомню вам о '+str(sup[0])+' через '+str(kolvo)+' '+str(end)+'!')
    	time.sleep(kolvo*60)
    	bot.send_message(call.chat.id,text=sup)
    def hour(call):
    	text = call.text
    	if text == '1':
    		end = 'час'
    	elif int(text) in sup3:
    		end = 'часа'
    	elif int(text) > 4 and int(text) < 20 or int(text) // 10 > 1 and int(text) % 10 in sup4:
    		end = 'часов'
    	else:
    		end = 'часов'
    	kolvo = int(text)
    	bot.send_message(call.chat.id, 'Я напомню вам о ' + str(sup[0]) + ' через ' + str(kolvo) + ' ' + str(end) + '!')
    	time.sleep(kolvo * 60 * 60)
    	bot.send_message(call.chat.id, text=sup)
    def day(call):
    	text = call.text
    	if text == '1':
    		end = 'день'
    	elif int(text) in sup3:
    		end = 'дня'
    	elif int(text) > 4 and int(text) < 20 or int(text) // 10 > 1 and int(text) % 10 in sup4:
    		end = 'дней'
    	else:
    		end = 'дней'
    	kolvo = int(text)
    	bot.send_message(call.chat.id,'Я напомню вам о ' + str(sup[0]) + ' через ' + str(kolvo) + ' ' + str(end) + '!')
    	time.sleep(kolvo * 24 * 60 * 60)
    	bot.send_message(call.chat.id, text=sup)
    bot.infinity_polling()
  • Как сделать общего телеграм бота?

    @codexim Автор вопроса
    bot.callback_query_handler(func=lambda
    тогда получается и перед этим удалить пробелы? и перед функцией Def choose(call) соответственно
  • Как сделать общего телеграм бота?

    @codexim Автор вопроса
    проверил. проблема не исчезла. на этапе когда пользователь выбирает единицу измерения (часы минуты дни) отклики с этих кнопок идут не к пользователю, кооторый на них нажимает, а именно ко мне. по сути ничего не поменялось, лишь код стал меньшего размера
  • Как сделать общего телеграм бота?

    @codexim Автор вопроса
    по итогу такой вот код получился. все учел?

    import telebot
    from telebot import types
    import time
    msup=['/min','/day','/hour','/help','/start','/n','/notify']
    bot = telebot.TeleBot('token')
    sup=[]
    sup1=[]
    sup2=['1','2','3','4']
    sup3=[2,3,4]
    sup4=[5,6,7,8,9,0]
    @bot.message_handler(commands=['start', 'help'])
    def welcome(message):
    	bot.send_message(message.from_user.id, 'Вас приветствует NotifyBot(бот-напоминание)\n'
    										   'Бот предназначен для создания напоминаний.\n'
    										   'Чтобы начать введите /notify или /n')
    @bot.message_handler(commands=['n', 'notify'])
    def request(message):
    	bot.send_message(message.from_user.id, 'О чем напомнить?')
    	bot.register_next_step_handler(message,choose)
    def choose(message):
    	req=message.text
    	sup.append(req)
    	if sup[0] in msup:
    		bot.send_message(message.from_user.id,'Для начала введите текст будущего уведомления!')
    		sup.remove(sup[0])
    		bot.register_next_step_handler(message,choose)
    	else:
    		ed_iden = 'Выберите единицу времени:'
    		keyboard = types.InlineKeyboardMarkup()
    		key_hour = types.InlineKeyboardButton(text='Минуты', callback_data='min')
    		key_min = types.InlineKeyboardButton(text='Часы', callback_data='hour')
    		key_day = types.InlineKeyboardButton(text='Дни', callback_data='days')
    		keyboard.add(key_min,key_hour,key_day)
    		bot.send_message(message.from_user.id, text=ed_iden, reply_markup=keyboard)
    		@bot.callback_query_handler(func=lambda call: True)
    		def choose_1(call):
    			if call.data=='min':
    				bot.send_message(message.from_user.id,'Введите целое количество минут.')
    				bot.register_next_step_handler(message,mins)
    			elif call.data=='hour':
    				bot.send_message(message.from_user.id,'Введите целое количество часов.')
    				bot.register_next_step_handler(message, hour)
    			elif call.data == 'days':
    				bot.send_message(message.from_user.id, 'Введите целое количество дней.')
    				bot.register_next_step_handler(message, day)
    def mins(message):
    	text = message.text
    	if text=='1':
    		end='минуту'
    	elif int(text) in sup3:
    		end='минуты'
    	elif int(text)>4 and int(text)<20 or int(text)//10>1 and int(text)%10 in sup4:
    		end='минут'
    	else:
    		end='минуты'
    	kolvo=int(text)
    	bot.send_message(message.from_user.id, 'Я напомню вам о '+str(sup[0])+' через '+str(kolvo)+' '+str(end)+'!')
    	time.sleep(kolvo*60)
    	bot.send_message(message.from_user.id,text=sup)
    def hour(message):
    	text = message.text
    	if text == '1':
    		end = 'час'
    	elif int(text) in sup3:
    		end = 'часа'
    	elif int(text) > 4 and int(text) < 20 or int(text) // 10 > 1 and int(text) % 10 in sup4:
    		end = 'часов'
    	else:
    		end = 'часов'
    	kolvo = int(text)
    	bot.send_message(message.from_user.id, 'Я напомню вам о ' + str(sup[0]) + ' через ' + str(kolvo) + ' ' + str(end) + '!')
    	time.sleep(kolvo * 60 * 60)
    	bot.send_message(message.from_user.id, text=sup)
    def day(message):
    	text = message.text
    	if text == '1':
    		end = 'день'
    	elif int(text) in sup3:
    		end = 'дня'
    	elif int(text) > 4 and int(text) < 20 or int(text) // 10 > 1 and int(text) % 10 in sup4:
    		end = 'дней'
    	else:
    		end = 'дней'
    	kolvo = int(text)
    	bot.send_message(message.from_user.id,'Я напомню вам о ' + str(sup[0]) + ' через ' + str(kolvo) + ' ' + str(end) + '!')
    	time.sleep(kolvo * 24 * 60 * 60)
    	bot.send_message(message.from_user.id, text=sup)
    bot.infinity_polling()
  • Как сделать общего телеграм бота?

    @codexim Автор вопроса
    пока не проверял, попозже отпишу
  • Как сделать общего телеграм бота?

    @codexim Автор вопроса
    получается в этом и заключалась проблема программы? В лишних функциях и именно поэтому она не работает у других людей или я переделал просто потому что так предыдущий вариант программы был не красивый?
  • Как сделать общего телеграм бота?

    @codexim Автор вопроса
    переделал на примере минут. я правильно понял как нужно делать?
    import telebot
    from telebot import types
    import time
    bot = telebot.TeleBot('token')
    sup=[]
    sup1=[]
    sup2=['1','2','3','4']
    sup3=[2,3,4]
    sup4=[5,6,7,8,9,0]
    @bot.message_handler(commands=['start', 'help'])
    def welcome(message):
    	bot.send_message(message.from_user.id, 'Вас приветствует NotifyBot(бот-напоминание)\n'
    										   'Бот предназначен для создания напоминаний.')
    	bot.send_message(message.from_user.id, 'Чтобы начать введите /notify или /n')
    	bot.register_next_step_handler(message,request)
    @bot.message_handler(commands=['n', 'notify'])
    def request(message):
    	bot.send_message(message.from_user.id, 'О чем напомнить?')
    	bot.register_next_step_handler(message,choose)
    	sup1.append(1)
    def choose(message):
    	req=message.text
    	sup.append(req)
    	sup.append(1)
    	if ('/min' in sup or sup1==[]) or ('/hour' in sup or sup1==[]) or ('/day' in sup or sup1==[]):
    		bot.send_message(message.from_user.id,'Для начала введите текст будущего уведомления!')
    		if '/min' in sup:
    			sup.remove('/min')
    		if '/hour' in sup:
    			sup.remove('/hour')
    		if '/day' in sup:
    			sup.remove('/day')
    		bot.register_next_step_handler(message,choose)
    	else:
    		ed_iden = 'Выберите единицу времени:'
    		keyboard = types.InlineKeyboardMarkup()
    		key_hour = types.InlineKeyboardButton(text='Минуты', callback_data='min')
    		keyboard.add(key_hour)
    		key_min = types.InlineKeyboardButton(text='Часов', callback_data='hour')
    		keyboard.add(key_min)
    		key_day = types.InlineKeyboardButton(text='Дни', callback_data='days')
    		keyboard.add(key_day)
    		bot.send_message(message.from_user.id, text=ed_iden, reply_markup=keyboard)
    		@bot.callback_query_handler(func=lambda call: True)
    		def choose_1(call):
    			if call.data=='min':
    				bot.send_message(message.from_user.id,'Введите целое количество минут.')
    				bot.register_next_step_handler(message,mins)
    def mins(message):
    	text = message.text
    	if text=='1':
    		end='минуту'
    	elif int(text) in sup3:
    		end='минуты'
    	elif int(text)>4 and int(text)<20 or int(text)//10>1 and int(text)%10 in sup4:
    		end='минут'
    	else:
    		end='минуты'
    	kolvo=int(text)
    	bot.send_message(message.from_user.id, 'Я напомню вам о '+str(sup[0])+' через '+str(kolvo)+' '+str(end)+'!')
    	time.sleep(kolvo*60)
    	bot.send_message(message.from_user.id,text=sup)
    bot.infinity_polling()