Использование sqlite3 Телеграм боте

В жизни каждого разработчика телеграм ботов наступает момент, когда необходимо реализовать оплату в вашем боте. И тут у вас есть два пути. Первый — зарегистрировать ИНН, ИП/Юридическое лицо и подключить официальную оплату от телеграма или просто использовать сторонний сервис по типу Free-Kassa, QIWI и т.д. Думаю выбор очевиден, в этой статье я буду использовать QIWI, потому что так хочу.

Для начала давайте подумаем как бот будет проверять что пришло, от кого и какая сумма. Капитан очевидность подсказывает мне, что необходимо будет получить всю историю переводов на аккаунт, который мы будем использовать в качестве нашего счета для приема платежей. Давайте это сделаем:

import requests import json QIWI_TOKEN = » QIWI_ACCOUNT = » s = requests.Session() s.headers[‘authorization’] = ‘Bearer ‘ + QIWI_TOKEN parameters = h = s.get(‘https://edge.qiwi.com/payment-history/v1/persons/’+ QIWI_ACCOUNT +’/payments’, params = parameters) req = json.loads(h.text)

В константу QIWI_TOKEN мы записываем api ключ для работы с QIWI, получить его можно тут. А в QIWI_ACCOUNT мы записываем номер телефона вашего главного счета. Если вы все сделали правильно, ошибок не будет. Данные находятся в словаре req, включающем в себя списки с данными. А точнее (не читать) переменную req включающую словарь data, в котором находится список из нумерованных словарей включающих в себя списки.

СОЗДАЁМ TELEGRAM БОТА С БАЗОЙ ДАННЫХ | СОХРАНЕНИЕ ПОЛЬЗОВАТЕЛЕЙ | SQLITE3 | PYTHON

Тут мы должны получить номер телефона, комментарий(позже поймете зачем) и сумму транзакции. Для того, чтобы продолжить писать код, вы должны будете уметь использовать базы данных, если вы не ничего не умеете или даже не знаете, что это такое — вот вам ссылка на статью, в которой достаточно понятно описана работа с Sqlite3. Теперь давайте продумаем алгоритм, который будет использован в нашем боте.

  • Генерируем рандомное число от 100000 до 999999.
  • Временно заносим данные в таблицу (id пользователя, номер телефона, сумма, сгенерированное ранее рандомное число)
  • Проверяем комментарий, аккаунт и сумму в словаре req.
  • Если сумма, телефон и комментарий сошлись — засчитываем оплату.
  • Добавляем свой функционал после оплаты…
Еще по теме:  Министерство связи Телеграмма от кого

Сейчас вы наверное задумались, а зачем нужно проверять этот комментарий и генерировать рандомное число? А все гениальное — просто. Дело в том, что если мы просто проверим сумму и телефон, то бот сможет найти ранее отправленную транзакцию и засчитать её. Проще говоря, это сделано для безопасности и минимизации багов. Продолжим писать код:

import sqlite3 c.execute(«CREATE TABLE IF NOT EXISTS payment_query(user_id INTEGER, phone TEXT, sum INTEGER, code INTEGER)»)

Заносим данные в таблицу, как только пользователь захочет что-то оплатить в вашем боте.

from random import randint # создаем иссуственные данные, которые хотим проверить phone = ‘+79999999999’ sum = 100 random_code = randint(100000, 999999) c.execute(f»INSERT INTO payment_query VALUES(, , , )») conn.commit()

Далее необходимо сделать какую-то проверку оплаты, в моем случае — это будет инлайн клавиатура:

Вот пример из моего недавнего бота

Как только пользователь нажмет на кнопку оплаты, бот получит историю переводов с QIWI. Теперь нам нужно сделать самое главное — проверку оплаты.

result = c.execute(f»SELECT * FROM payment_query WHERE user_id = «).fetchone() # достаем данные из таблицы # не рекомендую так делать, но это просто для теста (простите) phone = result[1] random_code = result[3] sum = result[2] # проходимся циклом по словарю for i in range(len(req[‘data’])): if req[‘data’][i][‘account’] == phone: if req[‘data’][i][‘comment’] == random_code: if req[‘data’][i][‘sum’][‘amount’] == sum: c.execute(f»DELETE FROM payment_query WHERE user_id = «) # удаляем временные данные из таблицы # код, который сработает, если оплата прошла успешно

Вот и все, надеюсь я помог вам решить очередную проблему!

  • О нас и контакты
  • СМИ о нас
  • Премии о нас
  • Отзывы
  • Пользовательское соглашение
  • Политика обработки персональных данных

Источник: katalog-kursov.ru

Телеграм бот на Python / #4 – SQLite3. Подключение к базе данных

За урок вы выполните подключение базы данных к вашему Телеграм Боту. Вы подключите БД SQLite3, но в будущем по схожему принципу сможете подключать любые другие БД. ✅ Полезные ссылки: – Урок на сайте itProger: itproger.com/course/telegram-bot/4 ⏰ Тайм-коды: 00:00 — Начало 01:10 — Подключение SQLite3 03:10 — Создание таблицы 06:15 — Получение имени и пароля 10:00 — Добавление пользователя в БД 17:05 — Список всех пользователей 21:20 — Заключительная часть ✔ Сообщество программистов: itproger.com/ ✔ — Вступай в группу Вк — vk.com/prog_life Группа FaceBook — goo.gl/XW0aaP Инстаграм itProger: instagram.com/itproger_official/ Instagram: instagram.com/gosha_dudar/ Telegram: t.me/itProger_official Twitter — twitter.com/GoshaDudar — Уроки от #GoshaDudar ‍ — Все уроки по хештегу #goshaLessons

Еще по теме:  Телеграмм видно ли мои подписки

Источник: www.euglobe.ru

Рейтинг
( Пока оценок нет )
Загрузка ...