@seojuf

Парсинг сообщений в канале с проверкой из базы данных. Как сделать?

Если указанные данные в базе данных в столбце steamid64 совпадают с значением steamid64 который отправляет другой бот, берется записанный ранее айдишник пользователя из базы данных, и ему отправляется какой либо текст.

В общем это система уведомлений и парсес который откликается на записанные данные steamid64 которые отправляет другой бот, если значение steamid64 совпадает - то он ищет человека с записанным userid ( и в одной строке рядом с userid находится steamid64) и отправляет сообщение в ЛС пользователю, только не могу понять как мне это сделать.
bot.py
class SteamID(StatesGroup):
    SID = State()

class SteamIDD(StatesGroup):
    SID = State()

conn = sqlite3.connect('data_base2.db')
cur = conn.cursor()

@dp.message_handler(state=SteamIDD.SID)
async def delete_account_procces(message:types.Message,state:FSMContext):
    steamid = message.text.split(';')
    steamid64 = steamid[0]
    with sqlite3.connect('data_base2.db') as c:
        c.execute ("DELETE FROM data_base2 WHERE steamid64 = ?;", [steamid64])
        await message.answer("Выполнено. Аккаунт удален.")
    await state.finish()

@dp.message_handler(commands="delaccount", state='*')
async def delete_account_procces(message: types.Message):
    with sqlite3.connect("data_base2.db") as c:
        check = c.execute("SELECT userid FROM data_base2 WHERE userid = ?", (message.from_user.id,)).fetchone()
        if check is None:
            await message.answer(f'<b>❌ У вас нет доступных аккаунтов для удаления.</b>')
        else:
            await message.answer(f'У вас имеются добавленные аккаунты, <b>Вы точно хотите перейти в меню удаления?</b>', reply_markup=kbs.delMenu)



@dp.message_handler(state=SteamID.SID)
async def add_account_procces(message:types.Message,state:FSMContext):
    steamid = message.text.split(';')
    steamid64 = steamid[0]
    with sqlite3.connect('data_base2.db') as c:
        c.execute('INSERT INTO data_base2 VALUES(?,?)',(message.from_user.id,steamid64))
        check = c.execute("SELECT userid FROM data_base2 WHERE steamid64 = ?;", [steamid64]).fetchone()
        if check is None:
            await message.answer(f"<b>✅ Готово.</b>\n\nАккаунт <i>{steamid64}</i> был успешно добавлен\n\nСписок ваших аккаунтов: /list\n\nКаждый раз, когда на этот аккаунт будет выпадать дроп, вам будут отправляться сообщения от этого бота.")
        else:
            await message.answer(f'❌ Такой аккаунт уже есть добавлен, возможно Вы его уже добавили.\n\nСписок ваших аккаунтов: /list', reply_markup=kbs.snovaMenu)
        await state.finish()


@dp.message_handler(commands="addaccount", state='*')
async def add_account_command(message: types.Message):
    with sqlite3.connect("data_base2.db") as c:
        check = c.execute("SELECT userid FROM data_base2 WHERE userid = ?", (message.from_user.id,)).fetchone()
        if check is None:
            await message.answer(f'<b>У вас нет доступных аккаунтов для отслеживания.</b>\n\nЕсли Вы хотите добавить аккаунт для отслеживания, то нажмите кнопку "✅ Добавить" под этим сообщением ', reply_markup=kbs.addMenu)
        else:
            await message.answer(f'<b>У вас уже добавлен аккаунт/аккаунты.</b>\n\nЕсли Вы хотите добавить ещё аккаунты для отслеживания, то нажмите кнопку "✅ Добавить" под этим сообщением ', reply_markup=kbs.addMenu)


@dp.message_handler(commands="list")
async def infocheck(message:types.Message):
    with sqlite3.connect("data_base2.db") as c:
        check = c.execute("SELECT userid FROM data_base2 WHERE userid = ?", (message.from_user.id,)).fetchone()
        if check is None:
            await message.answer(f'<b>У вас нет доступных аккаунтов для отслеживания.</b>\n\nЕсли Вы хотите добавить аккаунт для отслеживания, то напишите команду /addaccount')
        user = c.execute(f"SELECT * FROM data_base2 WHERE userid = {message.chat.id}").fetchall()
    for infouser in user:
        await message.answer(f'<b>Ваши аккаунты:</b>'\
                             f'\n\n'\
                             f'{infouser[1]}')

async def search_userid(message: types.Message):
    con = sqlite3.connect("data_base2.db")
    cursor = con.execute("SELECT userid FROM data_base2 WHERE userid = ?", (message.from_user.id,)).fetchone()
    if cursor is None:
        conn.close()
        return None
    else:
        conn.close()
        idt = cursor[0]
        return idt
  • Вопрос задан
  • 58 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы