我想制作一个机器人,它将加油站的汽油信息添加到数据库中。每个加油站可能有自己的燃料等级列表。
我怎样才能让它去加油站,例如,在这个键盘上,A92,它砰地记录在一个变量中,然后我选择了A95,记录在一个变量中......然后我说ok out of 3燃料选项只有两个,这意味着我将它们保存到数据库中......我将两个变量提供给数据库中的保存函数。
from db import db_connect as db
from settings import config
from aiogram import types, Dispatcher
from aiogram.dispatcher import FSMContext
from aiogram.dispatcher.filters.state import State, StatesGroup
from aiogram.dispatcher.filters import Text
from db import db_connect as db
class FSMAdmin(StatesGroup):
station = State()
fuel = State()
async def fsm_start(message: types.Message):
await FSMAdmin.station.set()
await message.answer("Оберіть заправку", reply_markup=config.STATION_FUEL_MENU, disable_notification=True)
async def cancel_handler(message: types.Message, state: FSMContext):
current_state = await state.get_state()
if current_state is None:
return
await state.finish()
await message.answer("Відміна команди виконана", reply_markup=types.ReplyKeyboardRemove())
async def back_state():
await FSMAdmin.previous()
async def set_station(message: types.Message, state: FSMContext):
async with state.proxy() as data:
data['station'] = message.text
stations = {
'⛽ Shell': config.FUELS_ALL_MENU,
'⛽ MAC': config.FUELS_BEZ_GAZ,
'⛽ Belarus': config.FUELS_GAZ_MENU,
}
await message.answer("Вкажіть наявність пального",
reply_markup=stations[message.text],
disable_notification=True)
await FSMAdmin.next()
async def save_fuel(message: types.Message, state: FSMContext):
current_state = await state.get_state()
if current_state is None:
return
await db.update_db(state)
await state.finish()
await message.answer("Дані успішно збережені", reply_markup=types.ReplyKeyboardRemove())
async def set_fuel(message: types.Message, state: FSMContext):
dict_fuel = {
"А-95": "fuel_95",
"А-92": "fuel_92",
"ДП": "fuel_dp",
"Газ": "fuel_gaz"
}
async with state.proxy() as data:
data.setdefault("choise_fuel", [])
if dict_fuel[message.text] not in data["choise_fuel"]:
data["choise_fuel"].append(dict_fuel[message.text])
def register_handlers_admin(dp: Dispatcher):
dp.register_message_handler(fsm_start, commands="пальне", state=None, chat_id=[978284975, 261891285, 145333452])
dp.register_message_handler(cancel_handler, state="*", commands="відміна")
dp.register_message_handler(cancel_handler, Text(equals="відміна", ignore_case=True), state="*")
dp.register_message_handler(back_state, Text(equals="👈️ Назад", ignore_case=True), state="*")
dp.register_message_handler(save_fuel, state="*", commands="/Зберегти")
dp.register_message_handler(save_fuel, Text(equals="💾 Зберегти", ignore_case=True), state="*")
dp.register_message_handler(set_station, state=FSMAdmin.station)
dp.register_message_handler(set_fuel, Text(equals=["А-95", "А-92", "ДП", "Газ"]), state=FSMAdmin.fuel)