Parcourir la source

Update structure

vmshay il y a 2 ans
Parent
commit
90c3f99253

+ 2 - 0
bot/__init__.py

@@ -1,2 +1,4 @@
 import bot.config
 import bot.dispatcher
+import bot.keyboards
+import bot.database

+ 5 - 0
bot/config.py

@@ -6,3 +6,8 @@ env_path = '.env'
 load_dotenv(dotenv_path=env_path)
 
 BOT_TOKEN = os.getenv('BOT_TOKEN')
+
+DB_HOST = os.getenv('DB_HOST')
+DB_NAME = os.getenv('DB_NAME')
+DB_USER = os.getenv('DB_USER')
+DB_PASS = os.getenv('DB_PASS')

+ 52 - 0
bot/database.py

@@ -0,0 +1,52 @@
+import mysql.connector
+from bot import config as conf
+
+
+class Database:
+    def __init__(self):
+        try:
+            self.connection = mysql.connector.connect(host=conf.DB_HOST,
+                                                      user=conf.DB_USER,
+                                                      password=conf.DB_PASS,
+                                                      database=conf.DB_NAME)
+            self.cursor = self.connection.cursor(dictionary=True)
+        except mysql.connector.Error as err:
+            print("Something went wrong: {}".format(err))
+
+    def cursor(self):
+        return self.cursor
+
+    def commit(self):
+        self.connection.commit()
+
+    def close(self, commit=True):
+        if commit:
+            self.commit()
+        self.connection.close()
+
+    def fetchone(self):
+        return self.cursor.fetchone()
+
+    def fetchall(self):
+        return self.cursor.fetchall()
+
+    def execute(self, sql, params=None):
+        return self.cursor.execute(sql, params or ())
+
+    def sql_fetchone(self, sql: str):
+        self.execute(sql)
+        response = self.fetchone()
+        if response is None:
+            return 'None'
+        else:
+            for v in response.values():
+                return v
+
+    def sql_fetchall(self, sql: str):
+        self.execute(sql)
+        response = self.fetchall()
+        return response
+
+    def sql_query_send(self, sql: str):
+        self.execute(sql)
+        self.commit()

+ 16 - 7
bot/keyboards.py

@@ -3,13 +3,13 @@ from aiogram.types import InlineKeyboardMarkup, InlineKeyboardButton
 
 def main_kb():
     keyboard = InlineKeyboardMarkup()
-#     bind = InlineKeyboardButton()
-#     my_events = InlineKeyboardButton()
-#     all_events = InlineKeyboardButton()
-# '🎯 Запланировать мероприятие'
-# '🗒 Мои события'
-# '📅 Все события'
-# "👮 Управление"
+    bind = InlineKeyboardButton('🎯 Запланировать мероприятие', callback_data='bind_event')
+    my_events = InlineKeyboardButton('🗒 Мои события', callback_data='my_events')
+    all_events = InlineKeyboardButton('📅 Все события', callback_data='all_events')
+    keyboard.add(bind)
+    keyboard.add(my_events)
+    keyboard.add(all_events)
+    return keyboard
 
 
 def register_kb():
@@ -17,3 +17,12 @@ def register_kb():
     register = InlineKeyboardButton("Регистрация", callback_data="register")
     keyboard.add(register)
     return keyboard
+
+
+def events_range_kb():
+    keyboard = InlineKeyboardMarkup()
+    today_button = InlineKeyboardButton(text="За сегодня", callback_data="today")
+    week_button = InlineKeyboardButton(text="За неделю", callback_data="week")
+    month_button = InlineKeyboardButton(text="За месяц", callback_data="month")
+    keyboard.add(today_button, week_button, month_button)
+    return keyboard

+ 2 - 2
handlers/commands.py

@@ -1,5 +1,5 @@
 from aiogram import types, Dispatcher
-
+from bot.keyboards import main_kb
 
 async def start_cmd(message: types.Message):
     if message.chat.type == 'private':
@@ -7,7 +7,7 @@ async def start_cmd(message: types.Message):
         msg = "🤖Вас приветствует бот 405 аудитории🤖\n\n"
         msg += "C моей помощью Вы можете забронировать мероприятие\n\n"
         msg += "Если есть преддоженния или замечания обратитесь к @FeldwebelWillman"
-        await message.answer(msg)
+        await message.answer(msg,reply_markup=main_kb())
     else:
         await message.answer(f"Если Вы хотите оставить заявку, "
                              f"напишите лично мне")

+ 3 - 0
handlers/user/__init__.py

@@ -0,0 +1,3 @@
+import handlers.user.all_events
+import handlers.user.my_events
+import handlers.user.bind_event

+ 14 - 0
handlers/user/all_events.py

@@ -0,0 +1,14 @@
+from aiogram import types, Dispatcher
+from bot.database import Database
+
+
+async def all_events(call: types.CallbackQuery):
+    db = Database()
+    data = db.sql_fetchall('select * from user_table')
+    print(data)
+    db.close()
+    await call.message.answer("Все события")
+
+
+def register(dp: Dispatcher):
+    dp.register_callback_query_handler(all_events, text_startswith='all_events')

+ 9 - 0
handlers/user/bind_event.py

@@ -0,0 +1,9 @@
+from aiogram import types, Dispatcher
+
+
+async def bind_event(call: types.CallbackQuery):
+    await call.message.answer("Тут типа евент биндить")
+
+
+def register(dp: Dispatcher):
+    dp.register_callback_query_handler(bind_event, text_startswith="bind_event")

+ 10 - 0
handlers/user/my_events.py

@@ -0,0 +1,10 @@
+from aiogram import types, Dispatcher
+
+
+async def my_events(call: types.CallbackQuery):
+    
+    await call.message.answer("Мои события")
+
+
+def register(dp: Dispatcher):
+    dp.register_callback_query_handler(my_events, text_startswith='my_events')

+ 7 - 1
main.py

@@ -2,9 +2,15 @@ import logging
 
 from aiogram import executor
 from bot.dispatcher import dp
-import handlers
+
+import handlers.user
 
 if __name__ == '__main__':
     logging.basicConfig(level=logging.INFO)
     handlers.commands.register(dp)
+    handlers.user.all_events.register(dp)
+    handlers.user.my_events.register(dp)
+    handlers.user.bind_event.register(dp)
     executor.start_polling(dp, skip_updates=True)
+
+

+ 1 - 0
requirements.txt

@@ -15,3 +15,4 @@ python-dotenv==0.21.1
 pytz==2022.7.1
 typing_extensions==4.5.0
 yarl==1.8.2
+mysql-connector-python~=8.0.32