Пишу бот для вк, опыта 0
Думаю, вопрос полезный, исходя из того, сколько всего пришлось найти что б узнать все это с нуля, может быть, кому-то и пригодится
Использую библиотеки vkbottle, sqlite3, aiosqlite, asyncio
vkbottle отвечает за асинхронную обработку сообщений, база на sqlite, aiosqlite и asyncio - асинхронные запросы к базе.
Запрос состоит из трех параметров. Параметры задает пользователь и они поочередно записываются в словарь {ИД: {'a': ['de'], 'b': ['fg'], 'c': ['hi']}}
Общая структура:
Ну и собсно, по теме .. Использовать vkbottle вообще нормально? Что лучше и быстрее и дольше будет поддерживаться или еще чего?
SQLite лучше заменить MSQL? Почему? Или чем еще? Что быстрее и лучше?
Использование словарей и выборка данных из них сильно тормозит процесс, если будет много запросов? Лучше чем-то заменить?
Если не полноценные ответы на вопросы, то хотя бы темы на которые стоит обратить внимание подскажите
Думаю, вопрос полезный, исходя из того, сколько всего пришлось найти что б узнать все это с нуля, может быть, кому-то и пригодится
Использую библиотеки vkbottle, sqlite3, aiosqlite, asyncio
vkbottle отвечает за асинхронную обработку сообщений, база на sqlite, aiosqlite и asyncio - асинхронные запросы к базе.
Запрос состоит из трех параметров. Параметры задает пользователь и они поочередно записываются в словарь {ИД: {'a': ['de'], 'b': ['fg'], 'c': ['hi']}}
Общая структура:
Python:
dict_id = {}
#функция запроса в базу первого типа
async def func_db_one(ids):
async with aiosqlite.connect('base') as conn:
cursor = await conn.execute("SELECT...")
rows = await cursor.fetchall()
return rows
#функция запроса второго типа
async def func_db_two(ids):
async with aiosqlite.connect('base') as conn:
cursor = await conn.execute("SELECT...")
rows = await cursor.fetchall()
return rows
#слушает команду для старта start - возможные команды
@bot.on.message(text=start)
async def wrapper(ans: Message):
#узнает ИД, записывает его в словарь
id_start = ans.from_id
dict_id[id_start] = {}
await ans("Выберите первый вариант запроса")
# слушает первый запрос
@bot.on.message(text=comm_one)
async def wrapper(ans: Message):
# тут были строки по добавлению первого запроса в словарь
await ans("Выберите второй вариант запроса")
# слушает второй запрос
@bot.on.message(text=comm_two)
async def wrapper(ans: Message):
# тут были строки по добавлению второго запроса в словарь
await ans("Выберите третий вариант запроса")
# слушает третий запрос и выдает данные с базы
@bot.on.message(text=comm_thr)
async def wrapper(ans: Message):
#строки по добавлению запроса в словарь
#проверка типа зпроса
if запрос in фильтр:
data = await func_db_one(ИД)
else:
data = await func_db_two(ИД)
#тут еще цикл перебора data для нормального вывода в следующий ans
await ans("ответ = ", data)
Ну и собсно, по теме .. Использовать vkbottle вообще нормально? Что лучше и быстрее и дольше будет поддерживаться или еще чего?
SQLite лучше заменить MSQL? Почему? Или чем еще? Что быстрее и лучше?
Использование словарей и выборка данных из них сильно тормозит процесс, если будет много запросов? Лучше чем-то заменить?
Если не полноценные ответы на вопросы, то хотя бы темы на которые стоит обратить внимание подскажите
Последнее редактирование: