• XSS.stack #1 – первый литературный журнал от юзеров форума

(Python) QIWI TELEGRAM BOT

K4NITEL

HDD-drive
Пользователь
Регистрация
23.01.2019
Сообщения
29
Реакции
13
Telegram Qiwi Bot
Приложение создано для рядовых пользователей Telegram и Qiwi
С помощью данного продукта можно совершать банковские операции, просматривать статус платежей, искать ближайшие пункты пополнения, вообщем карманный киви кошелёк в телеграмме

Для тех кому лень устанавливать могу дать адрес телеграмм своего бота уже установленного и улучшенной версии для пользования, данная версия с открытым исходным кодом для изучения или чего то ещё)

o_OПример работы ботаo_O

98B3D485-8004-4A65-BFC0-6E5433A9BA08.jpeg
3EE58485-C51D-4530-945A-706B2AE091E0.jpeg

Далее читают те кто хочет разобраться как и через что работает бот, ссылку с инструментом и установкой можно найти в конце статьи.

Введение (используемые API) кликабельно
QiwiAPI

QiwiAPI карт терминалов

API для вычисления города по IP

API Яндекс карт

Геокодер Яндекс карт

Python-Telegram-Bot

Описание реализации

Структура:

:zns3:Приложение разбито на 3 файла:zns3:
1) Bot.py — основная логика бота
2) QIWI_API.py — работа с API
3) Languages.json — тест кнопок и диалогов

Особенности:
Приложение использует 6 видов API Геокодер и Static API от компании «Яндекс» работают в связке с QIWI-Terminal-Map API и FreeGEOIP для отображения пользователю карты терминалов или их адресов. Так же у пользователя есть возможность отправить своё местоположение.
(модули)

:zns3: urllib — отправка GET запросов
:zns3: json — помощь в отправке POST запросов и работа с локализацией
:zns3: time — помощь в отправке POST запросов (UNIX TIME)
:zns3: requests — отправка POST запросов
:zns3: os — очистка рабочей папки после отправки изображения чека
:zns3: telegram (Python-Telegram-Bot) — взаимодействие с серверами Telegram
(классы ошибок)

:zns6:QiwiError(Exception):zns6:
:zns5: SyntaxisError(QiwiError) "Query execution failed"

:zns5: TokenError(QiwiError) "Wrong TOKEN"

:zns5: class NoRightsError(QiwiError): "No right"

:zns5: TransactionNotFound(QiwiError) "Transaction not found or missing payments with specified characteristics"

:zns5: WalletError(QiwiError) "Wallet not found"

:zns5: HistoryError(QiwiError) "Too many requests, the service is temporarily unavailable"

:zns5: MapError(QiwiError) "Map processing errors"

:zns5: NotFoundAddress(MapError) "Could not find address"

:zns5: CheckError(QiwiError) "Could not get check"

:zns5: WrongEmail(CheckError) "Wrong Email address"

:zns5: WrongNumber(QiwiError) "Wrong phone number"

:zns5: TransactionError(QiwiError) "Failed to carry out the transaction"

:zns6:class UserQiwi:zns6:

UserQiwi.url = https://edge.qiwi.com/

:zns5: self.token(str) = токен пользователя
:zns5: self.headers(dict) = headerы для выполнения запросов
:zns5: self.urls(dict) = формы заполнения ссылок для запросов
:zns5: self.currency(dict) = «конвертер валюты»
:zns5: self.identification(dict) = «конвертер идентификаторов»
:zns5: self.user_date(dict) = информация о пользователе

:zns6: class UserQiwi :zns6:

:smile24: Данные представлены в виде:
(Название | Переменные | Описание | Тип возвращаемых данных) :smile24:

:zns5: (__init__self | token | объявляет нового пользователя | None)
:zns5: (change_tokenself | new_token | меняет токен пользователя | None)
:zns5: (get_user_token | self | возвращает пользовательски токен | str)
:zns5: (get_balance | self | возвращает баланс счетов пользователя | str)
:zns5: (update_info | self | обновляет self.user_data | None)
:zns5: (get_info | self | возвращает информацию о пользователе | str)

:zns6:class UserQiwi:zns6:

:smile24: Данные представлены в виде: (Название | Переменные | Описание | Тип возвращаемых данных) :smile24:

:zns5: (get_last_transactionsself | rows
(по умолчанию = 10) | Возвращает последние транзакции пользователя | str)
:zns5: (get_info_about_transaction | self | transaction_id | Возвращает информацию по транзакции | str)
:zns5: (get_map_terminates | self, address
(по умолчанию None) | Возвращает ссылку на изображение карты и адреса терминалов | dict)
:zns5: (get_image_checkself | transaction_id, file_name (по умолчанию «check.jpg») | Создает изображение чека указанной транзакции (не работает с IN типом транзакций) | None)
:zns5: (send_check_emailself | transaction_id, email
(по умолчанию None) | Отправляет изображение чека на почту. Если почта не указана используется почта пользователя | None)

:zns6:class UserQiwi:zns6:

:smile24: Данные представлены в виде:
(Название | Переменные | Описание | Тип возвращаемых данных) :smile24:

:zns5: (transaction_telephoneself | amount, number
(по умолчанию None) | Переводит средства со счета владельца на указанный номер. Если такого нет, используется номер пользователя | None)
:zns5: transaction_qiwiself | account_id, amount | Переводит средства со счета владельца на указанный счет | None)

:smile30:Функции QIWI_API :smile30:
:zns5: run_the_query(headers, url) — Выполняет GET запрос (urllib + json) | dict/bool
:zns5: found_address(ip) — Выполняет GET запрос (requests). Возвращает город определенный по ip адресу
:zns5: 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:

:zns5: (startbot | update | Начало работы с ботом)
:zns5: (check_tokenbot| update, user_data | Проверка токена)
:zns5: (balancebot | update, user_data | Отправляет баланс)
:zns5: (transactionsbot | updateНачало | диалога по поводу транзакций.)
:zns5: (check_statusbot | update | Просьба ввести id транзакции)
:zns5: (answer_about_transactionbot | update, user_data | Отправляет информацию о транзакции)
:zns5: (lastbot | update, user_data | Отпрвляет информацию о последних транзакицях)

:smile37:Bot.py:smile37:

:smile24: Данные представлены в виде:
(Название | Переменные | Описание) :smile24:

:zns5: (terminalsbot | update, user_data | Начало работы с транзакциями)
:zns5: (take_command_found_addressbot | update, user_data | Выбор типа ответа)
:zns5: (take_addressbot | update | Просьба ввести адрес)
:zns5: (take_locaionbot | update, user_data | Обработка координат геолокации пользователя)
:zns5: (answer_about_terminatesbot | update | Отправка ответа)
:zns5: (optionsbot | update | Начало диалога по поводу настроек)
:zns5: (get_infobot | update, user_data | Отпрвляет информацию о пользователе)

:smile37:Bot.py:smile37:

:smile24: Данные представлены в виде:
(Название | Переменные | Описание) :smile24:

:zns5: (take_new_tokenbot | update | Смена пользователя)
:zns5: (update_userbot | update, user_data | Обновление информации аккаунта)
:zns5: (versionbot | update | Отправка версии программы)
:zns5: (checkbot | update, user_data | Начало диалога про чеки)
:zns5: (dialog_emailbot | update, user_data | Начало диалога про почту)
:zns5: (enter_emailbot | update | Просьба ввести email)
:zns5: (get_emailbot | update, user_data | Получение email. Просьба ввести id транзакции)

:smile37:Bot.py:smile37:


:smile24: Данные представлены в виде:
(Название | Переменные | Описание) :smile24:

:zns5: (enter_transaction_idbot | update | Просьба ввести id транзакции.)
:zns5: (get_transaction_idbot | update, user_data | Вывод на экран/отправка на почту копии чека)
:zns5: (paybot | update, user_data | Начало диалога про оплату)
:zns5: (enter_user_idbot | update, user_data | Просьба ввести id клиента)
:zns5: (get_user_idbot | update, user_data | Получение id клиента. Просьба ввести сумму перевода.)
:zns5: (mobile_phonebot | update, user_data | Начало диалога про выбор номера мобильного телефона)
:zns5: (enter_mobilebot | update | Просьба ввести номер мобильного телефона)

:smile37:Bot.py:smile37:

:smile24: Данные представлены в виде:
(Название | Переменные | Описание):smile24:

:zns5: (get_mobilebot | update, user_data | Получение номера мобильного телефона. Просьба ввести сумму оплаты.)
:zns5: (enter_amountbot | update | Просьба ввести сумму оплаты.)
:zns5: (get_amountbot | update, user_data | Оплата
мобильного/перевод
клиенту Qiwi)
:zns5: (wrong_answerbot | update | Отправка указания на использование клавиатуры)
:zns5: (backbot | update | Возврат к начальному меню.)
:zns5: (stopbot | update | Завершение работы с ботом)

Инструкция и бот:
Скачать
(кликабельно)
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх