Telegram Qiwi Bot
Приложение создано для рядовых пользователей Telegram и Qiwi
С помощью данного продукта можно совершать банковские операции, просматривать статус платежей, искать ближайшие пункты пополнения, вообщем карманный киви кошелёк в телеграмме
Для тех кому лень устанавливать могу дать адрес телеграмм своего бота уже установленного и улучшенной версии для пользования, данная версия с открытым исходным кодом для изучения или чего то ещё)
Пример работы бота
Далее читают те кто хочет разобраться как и через что работает бот, ссылку с инструментом и установкой можно найти в конце статьи.
Приложение создано для рядовых пользователей Telegram и Qiwi
С помощью данного продукта можно совершать банковские операции, просматривать статус платежей, искать ближайшие пункты пополнения, вообщем карманный киви кошелёк в телеграмме
Для тех кому лень устанавливать могу дать адрес телеграмм своего бота уже установленного и улучшенной версии для пользования, данная версия с открытым исходным кодом для изучения или чего то ещё)
Далее читают те кто хочет разобраться как и через что работает бот, ссылку с инструментом и установкой можно найти в конце статьи.
Введение (используемые API) кликабельно
QiwiAPI
QiwiAPI карт терминалов
API для вычисления города по IP
API Яндекс карт
Геокодер Яндекс карт
Python-Telegram-Bot
Описание реализации
Структура:
Приложение разбито на 3 файла
1) Bot.py — основная логика ботаСтруктура:
Приложение разбито на 3 файла
2) QIWI_API.py — работа с API
3) Languages.json — тест кнопок и диалогов
Особенности:
(модули)
urllib — отправка GET запросов
json — помощь в отправке POST запросов и работа с локализацией
time — помощь в отправке POST запросов (UNIX TIME)
requests — отправка POST запросов
os — очистка рабочей папки после отправки изображения чека
telegram (Python-Telegram-Bot) — взаимодействие с серверами Telegram(классы ошибок)
QiwiError(Exception)
SyntaxisError(QiwiError) "Query execution failed"
TokenError(QiwiError) "Wrong TOKEN"
class NoRightsError(QiwiError): "No right"
TransactionNotFound(QiwiError) "Transaction not found or missing payments with specified characteristics"
WalletError(QiwiError) "Wallet not found"
HistoryError(QiwiError) "Too many requests, the service is temporarily unavailable"
MapError(QiwiError) "Map processing errors"
NotFoundAddress(MapError) "Could not find address"
CheckError(QiwiError) "Could not get check"
WrongEmail(CheckError) "Wrong Email address"
WrongNumber(QiwiError) "Wrong phone number"
TransactionError(QiwiError) "Failed to carry out the transaction"
self.token(str) = токен пользователя
self.headers(dict) = headerы для выполнения запросов
self.urls(dict) = формы заполнения ссылок для запросов
self.currency(dict) = «конвертер валюты»
self.identification(dict) = «конвертер идентификаторов»
self.user_date(dict) = информация о пользователе
class UserQiwi 
:smile24: Данные представлены в виде:
(__init__self | token | объявляет нового пользователя | None)
(change_tokenself | new_token | меняет токен пользователя | None)
(get_user_token | self | возвращает пользовательски токен | str)
(get_balance | self | возвращает баланс счетов пользователя | str)
(update_info | self | обновляет self.user_data | None)
(get_info | self | возвращает информацию о пользователе | str)
class UserQiwi
:smile24: Данные представлены в виде: (Название | Переменные | Описание | Тип возвращаемых данных) :smile24:
(get_last_transactionsself | rows(по умолчанию = 10) | Возвращает последние транзакции пользователя | str)
(get_info_about_transaction | self | transaction_id | Возвращает информацию по транзакции | str)
(get_map_terminates | self, address(по умолчанию None) | Возвращает ссылку на изображение карты и адреса терминалов | dict)
(get_image_checkself | transaction_id, file_name (по умолчанию «check.jpg») | Создает изображение чека указанной транзакции (не работает с IN типом транзакций) | None)
(send_check_emailself | transaction_id, email(по умолчанию None) | Отправляет изображение чека на почту. Если почта не указана используется почта пользователя | None)
class UserQiwi
:smile24: Данные представлены в виде:
(transaction_telephoneself | amount, number(по умолчанию None) | Переводит средства со счета владельца на указанный номер. Если такого нет, используется номер пользователя | None)
transaction_qiwiself | account_id, amount | Переводит средства со счета владельца на указанный счет | None):smile30:Функции QIWI_API :smile30:
run_the_query(headers, url) — Выполняет GET запрос (urllib + json) | dict/bool
found_address(ip) — Выполняет GET запрос (requests). Возвращает город определенный по ip адресу
str/bool write_file(headers, url, file_name) — ВыполняетGET запрос (urllib). Записывает изображение чека в указанный файл. | bool found_id(number) — Выполняет POST запрос
(requests). Возвращает id мобильного оператора. | str/bool
:smile37:Bot.py:smile37:
:smile24: Данные представлены в виде:
(Название | Переменные | Описание) :smile24::smile24: Данные представлены в виде:
(startbot | update | Начало работы с ботом)
(check_tokenbot| update, user_data | Проверка токена)
(balancebot | update, user_data | Отправляет баланс)
(transactionsbot | updateНачало | диалога по поводу транзакций.)
(check_statusbot | update | Просьба ввести id транзакции)
(answer_about_transactionbot | update, user_data | Отправляет информацию о транзакции)
(lastbot | update, user_data | Отпрвляет информацию о последних транзакицях):smile37:Bot.py:smile37:
:smile24: Данные представлены в виде:
(Название | Переменные | Описание) :smile24::smile24: Данные представлены в виде:
(terminalsbot | update, user_data | Начало работы с транзакциями)
(take_command_found_addressbot | update, user_data | Выбор типа ответа)
(take_addressbot | update | Просьба ввести адрес)
(take_locaionbot | update, user_data | Обработка координат геолокации пользователя)
(answer_about_terminatesbot | update | Отправка ответа)
(optionsbot | update | Начало диалога по поводу настроек)
(get_infobot | update, user_data | Отпрвляет информацию о пользователе):smile37:Bot.py:smile37:
:smile24: Данные представлены в виде:
(Название | Переменные | Описание) :smile24::smile24: Данные представлены в виде:
(take_new_tokenbot | update | Смена пользователя)
(update_userbot | update, user_data | Обновление информации аккаунта)
(versionbot | update | Отправка версии программы)
(checkbot | update, user_data | Начало диалога про чеки)
(dialog_emailbot | update, user_data | Начало диалога про почту)
(enter_emailbot | update | Просьба ввести email)
(get_emailbot | update, user_data | Получение email. Просьба ввести id транзакции):smile37:Bot.py:smile37:
:smile24: Данные представлены в виде:
(enter_transaction_idbot | update | Просьба ввести id транзакции.)
(get_transaction_idbot | update, user_data | Вывод на экран/отправка на почту копии чека)
(paybot | update, user_data | Начало диалога про оплату)
(enter_user_idbot | update, user_data | Просьба ввести id клиента)
(get_user_idbot | update, user_data | Получение id клиента. Просьба ввести сумму перевода.)
(mobile_phonebot | update, user_data | Начало диалога про выбор номера мобильного телефона)
(enter_mobilebot | update | Просьба ввести номер мобильного телефона):smile37:Bot.py:smile37:
:smile24: Данные представлены в виде:
(Название | Переменные | Описание):smile24::smile24: Данные представлены в виде:
(get_mobilebot | update, user_data | Получение номера мобильного телефона. Просьба ввести сумму оплаты.)
(enter_amountbot | update | Просьба ввести сумму оплаты.)
(get_amountbot | update, user_data | Оплатамобильного/перевод
клиенту Qiwi)
(wrong_answerbot | update | Отправка указания на использование клавиатуры)
(backbot | update | Возврат к начальному меню.)
(stopbot | update | Завершение работы с ботом)