Бот на aiogram. Бот выставляет пост в канал. Для поста добавлены кнопки лайк и дизлайк. Но 1 пользователь может ставить сколько угодно лайков и дизлайков. Как этого избежать? При повторном нажатии: await call.answer(text="Ты уже поставил лайк", show_alert=True)
@dp.message_handler(commands=['test'])
async def test(message: types.Message):
user_id = message.from_user.id
keyboard = types.InlineKeyboardMarkup()
callback_button1 = types.InlineKeyboardButton(text="лайк", callback_data=f"{user_id}|test1")
callback_button2 = types.InlineKeyboardButton(text="дизлайк", callback_data=f"{user_id}|test2")
keyboard.add(callback_button1, callback_button2)
await bot.send_message(chat_id= '@channel_name', text='текст поста', parse_mode="Markdown", reply_markup=keyboard)
@dp.callback_query_handler(lambda call: True)
async def callback_inline1(call):
conn = sqlite3.connect('db.db')
cur = conn.cursor()
user_id = call.from_user.id
with suppress(MessageNotModified):
if call.message:
mandm, data = call.data.split('|')
if data == "test1":
cur.execute("UPDATE users SET like = like + ? WHERE user_id = ?", (1, mandm))
conn.commit()
await call.answer(text="Лайкнул", show_alert=True)
elif data == "test2":
cur.execute("UPDATE users SET dislike = dislike + ? WHERE user_id = ?", (1, mandm))
conn.commit()
await call.answer(text="Дизлайкнул", show_alert=True)