import enum
class UserStates(enum.IntEnum):
default = 0
polt_pressed = 1
user_states = {}
@dp.callback_query_handler()
async def plt(call: CallbackQuery):
user_id = call.from_user.id
if user_id not in user_states: #новый пользователь?
user_states[user_id] = UserStates.default #да, ставим ему состояние по умолчанию
if 'polt' in call.data: #обрабатываем сигнал polt
if user_states[user_id] == UserStates.default: #пользователь в состоянии по умолчанию?
user_states[user_id] = UserStates.polt_pressed # запоминаем что этот юзер нажал polt.
await call.message.edit_text('Красава', reply_markup=pltv)
else: #пользователь уже нажимал polt!
await call.message.edit_text('Второй раз нельзя!', reply_markup=pltv)
elif 'amf' in call.data:
if user_states[user_id] == UserStates.polt_pressed: #пользователь уже нажал polt?
await call.message.answer('Ура', reply_markup=btnp_all)
else:
await call.message.answer('Сначала нажми polt!', reply_markup=btnp_all)
During program startup, the equivalent of setlocale(LC_ALL, "C"); is executed before any user code is run.
>>> import locale
>>> locale.format_string('%f', 3.14)
'3.140000'
>>> locale.setlocale(0, '')
'Russian_Russia.1251'
>>> locale.format_string('%f', 3.14)
'3,140000'
if not q.empty():
msg = q.get_nowait()
try:
msg = q.get_nowait()
except Empty: #очередь пуста, спим дальше.
await asyncio.sleep(1.0)
else:
await sendmsg(msg)
q.task_done()
.channel
The channel that the message was sent in
Type: TextChannel or DMChannel or NewsChannel
(message.channel instanceof TextChannel) && (message.channel.name == 'wtf_channel')
основной_каталог_хранения/год_выдачи/ИНН/справка_номер.pdf
Или нечто подобное. Тогда для заданной записи из БД можно будет однозначно определить путь, по которому она должна храниться.
Про работу с файлами - смотря какая задача. В целом смотри в сторону модуля os, но если тебе просто нужен временный файл, tempfile будет удобнее.