mirror of
https://github.com/KUlishevgeniy/c22712.git
synced 2026-09-23 23:50:21 +00:00
84 lines
5.8 KiB
Python
84 lines
5.8 KiB
Python
#Небольшое предисловие: кнопки item1, item2 и item3 похожи по своему функционалу, однако между ними есть разница в реализации - item3 реализована через функцию, прописанную в доп.файле
|
|
import telebot
|
|
import psycopg2
|
|
from telebot import types
|
|
import random
|
|
from wwfuncs import select #импорт функции из другого файла
|
|
|
|
connection = psycopg2.connect(host='localhost', dbname='FHWDB', user='postgres', password='Q1w2e3r4')
|
|
cursor = connection.cursor()
|
|
|
|
try:
|
|
s_query = """SELECT * FROM public.parse"""
|
|
cursor.execute(s_query)
|
|
except psycopg2.errors.UndefinedTable: #рассматриваем случай, когда таблицы нет
|
|
connection.rollback() #возвращаемся "на действие назад"
|
|
import FHWDB #создаём и заполняем таблицу, если её не существовало ранее
|
|
connection = psycopg2.connect(host='localhost', dbname='FHWDB', user='postgres', password='Q1w2e3r4')
|
|
cursor = connection.cursor()
|
|
s_query = '''SELECT * FROM public.parse'''
|
|
cursor.execute(s_query)
|
|
finally:
|
|
arr = list(cursor.fetchall())
|
|
|
|
bot = telebot.TeleBot('5980905704:AAH2qIP4Gy60nhuKNAojOGpmI6zwNoJK1Iw')
|
|
|
|
min_id, max_id = 1, 60
|
|
|
|
@bot.message_handler(commands=["start"])
|
|
def start(m, res=False):
|
|
markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
|
|
item1 = types.KeyboardButton("Хочу информацию о любых цветах, пожалуйста")
|
|
item2 = types.KeyboardButton("Хочу картинку любых цветов, пожалуйста")
|
|
item3 = types.KeyboardButton("Хочу информацию о предложении дня, пожалуйста")
|
|
item4 = types.KeyboardButton("Общая информация о сведениях, находящихся в базе данных")
|
|
item5 = types.KeyboardButton("Поиск конкретного предложения по ID")
|
|
markup.add(item1)
|
|
markup.add(item2)
|
|
markup.add(item3)
|
|
markup.add(item4)
|
|
markup.add(item5)
|
|
bot.send_message(m.chat.id,
|
|
'"Хочу информацию о любых цветах, пожалуйста" - для получения карточки цветов;\n "Хочу картинку любых цветов, пожалуйста" - для получения картинки цветов;\n "Хочу информацию о предложении дня, пожалуйста" - сводка о конкретных цветах;\n "Общая информация о сведениях, находящихся в базе данных" - сводка об характеристиках товаров, информация о которых находится в БД.\n "Поиск конкретного предложения по ID" - найдите инересующее вас предложение по ID',
|
|
reply_markup=markup)
|
|
|
|
@bot.message_handler(content_types=["text"])
|
|
def handle_text(message):
|
|
if (message.text.strip() == "Хочу информацию о любых цветах, пожалуйста"):
|
|
i = random.choice(arr)
|
|
a1 = f'Название: {i[1]};\nЦена: {i[2]};\nСкидка(в процентах): {i[3]};\n'
|
|
bot.send_message(message.chat.id, a1)
|
|
elif (message.text.strip() == "Хочу картинку любых цветов, пожалуйста"):
|
|
i = random.choice(arr)
|
|
bot.send_photo(message.chat.id, open(i[4], 'rb'))
|
|
elif (message.text.strip() == "Хочу информацию о предложении дня, пожалуйста"):
|
|
j = random.randint(1, 61)
|
|
i = list(select(j))
|
|
a1 = f'Название: {i[1]};\nЦена: {i[2]};\nСкидка(в процентах): {i[3]};\n'
|
|
bot.send_message(message.chat.id, "Предложение дня:\n")
|
|
bot.send_message(message.chat.id, a1)
|
|
bot.send_photo(message.chat.id, open(i[4], 'rb'))
|
|
elif (message.text.strip() == "Поиск конкретного предложения по ID"):
|
|
sent = bot.send_message(message.chat.id,
|
|
f'Введите идентификатор(ID, целое число) от {min_id} до {max_id}, чтобы получить информацию о конкретном предложении: ')
|
|
bot.register_next_step_handler(sent, ret_id)
|
|
else:
|
|
bot.send_message(message.chat.id, "С помощью данного бота вы можете получить информацию о 60-и цветах одного из московских магазинов по их продаже, в частности их: название, цену, скидку(в процентах) и фото. Вы можете это осуществить, взаимодействуя с ботом. Попробуйте! ")
|
|
|
|
def ret_id(message):
|
|
now_id = int(message.text)
|
|
if now_id > max_id or now_id < min_id:
|
|
bot.send_message(message.chat.id, "По такому ID нет данных. Попробуйте заново через 'меню' кнопок найти интересующее вас предложение")
|
|
return
|
|
else:
|
|
z = list(select(now_id))
|
|
a2 = f'Название: {z[1]};\nЦена: {z[2]};\nСкидка(в процентах): {z[3]};\n'
|
|
bot.send_message(message.chat.id, a2)
|
|
bot.send_photo(message.chat.id, open(z[4], 'rb'))
|
|
bot.send_message(message.chat.id, "Для повторного поиска по ID воспользуйтесь соответствующей кнопкой в 'меню'")
|
|
|
|
bot.polling(none_stop=True, interval=0)
|
|
|
|
cursor.close()
|
|
connection.close()
|