October 18, 2023
Donate
Наш модуль `donate` предоставляет инструменты для обработки пожертвований.
Этот модуль содержит классы и функции, которые позволяют управлять данными о пожертвованиях, а также выполнять различные операции над ними.
Важно подметить что модуль Donate будет иметь несколько способов обработки пожертвований
Доступные способы донатов
- TonRocket - Сервис который предоставляет тонну функций, таких как отправка, получение и других полезных функций (Crypto)
- Crypto - Сервис который предоставляет тонну функций, таких как отправка, получение и других полезных функций (Crypto)
- скоро...
Функции
TonRocket
- version - возвращает текущую версию сервиса
- info - возвращает информацию про ваше приложение
- transfer - отправляет крипту другому пользователю через его айди
- withdrawal - Вывод на кошелек по его адресу
- create - создает счет после возвращает нужную информацию про создание
- get_me - возвращает информацию про все счета
- check - показывает информацию про счет по его айди
- delete - удаляет счет по его айди
CryptoBot
- get_me - Возвращает информацию про ваше приложение в CryptoBot
- create - создает счет после возвращает нужную информацию про создание
- transfer - отправляет крипту другому пользователю через его айди
- get_invoices - возвращает информацию про все счета
- rates - возвращает соотношений токенов к рублю
- currencies - возвращает все токены
RuKassa
- create - Создает счет в вашем мерчанте через токен
- info - Возвращает информацию про счет через его айди
- withdraw_info - возвращает информацию про вывод из сайта Rukassa
- get_balance - Получаем баланс аккаунта из Rukassa
- create_withdraw - запросить вывод на карту из сайта Rukassa
- cancel_withdraw - Отменить вывод
Другое
- generator - возвращает полностью заполнений пример данных для создания счета для Donate_init из TonRocket
Классы
TonRocket
- Client - пользовательский клиент в котором находятся основные функции
- User - Класс который предоставляет такие функции как user_agent, timeline
Другое
Декораторы
TonRocket
- Donate_init - декоратор который инициализирует функцию доната, возвращает вам ссылку для оплаты после проверяет этот счет на протяжении expiredIn, если счет не будет оплачен он возвратит False, так же если счет будет оплачен он возвратит paid и телеграмм айди человека который оплатил
Exceptions
TonRocket
message="[Error]: Unauthorized"
Ошибка обозначает то что вы не ввели ключ либо он не действителен
message="[Error]: ExpiredIn must be at least 60 seconds!"
Ошибка обозначает то что ExpiredIn в декораторе(@Donate_init) должен быть не меньше чем 60 секунд
{ "success": false, "message": "Error Message", "errors": [ { "property": "somePropertyName", "error": "somePropertyName should be less than X" } ] }
{ "success": false, "message": "Error Message" }
{ "success": false, "message": "Error Message" }
Страница не найдена. если появилась эта ошибка то немедленно свяжитесь с нами
{ "success": false, "message": "Error Message" }
сервер столкнулся с неожиданной ошибкой.
Примеры:
TonRocket
from donate.utils.tonrocket import Client app = Client() print(app.version())
{'version': '1.3.1'}
from donate.utils.tonrocket import Client app = Client(api_key="your key") print(app.info())
{'success': True, 'data': {'name': 'Red', 'feePercents': 1.5, 'balances': [{'currency': 'TONCOIN', 'balance': 0.011457303}, {'currency': 'SCALE', 'balance': 0}, {'currency': 'BOLT', 'balance': 0}, {'currency': 'TAKE', 'balance': 0}, {'currency': 'HEDGE', 'balance': 0}, {'currency': 'KOTE', 'balance': 0}, {'currency': 'TNX', 'balance': 0}, {'currency': 'GRBS', 'balance': 0}, {'currency': 'AMBR', 'balance': 0}, {'currency': 'jUSDT', 'balance': 0}, {'currency': 'JBCT', 'balance': 0}, {'currency': 'IVS', 'balance': 0}, {'currency': 'LAVE', 'balance': 0}, {'currency': 'DHD', 'balance': 0}]}}
from donate.utils.tonrocket import Client app = Client(api_key="your key") data = { "tgUserId": 5968878656, "currency": "TONCOIN", "amount": 0.000045, "description": "test" } print(app.transfer(data=data))
{'success': True, 'data': {'id': 17051043, 'currency': 'TONCOIN', 'tgUserId': 5968878656, 'amount': 4.5e-05, 'description': 'test'}}
- tgUserId - id получателя
- currency - токен
- amount - кол-во для передачи
- description - описание(его увидит тот кому вы перевели)
from donate.utils.tonrocket import Client app = Client(api_key="your key") data = { "amount": 1.23, "numPayments": 1, "currency": "TONCOIN", "description": "best thing in the world, 1 item", "hiddenMessage": "thank you", "commentsEnabled": False, "callbackUrl": "https://t.me/ton_rocket", "payload": "some custom payload I want to see in webhook or when I request invoice", "expiredIn": 60 } print(app.create(data=data))
{'success': True, 'data': {'id': '223784', 'amount': 4.5e-05, 'minPayment': None, 'currency': 'TONCOIN', 'description': 'best thing in the world, 1 item', 'hiddenMessage': 'thank you', 'commentsEnabled': 0, 'payload': 'some custom payload I want to see in webhook or when I request invoice', 'callbackUrl': 'https://t.me/ton_rocket', 'status': 'active', 'expiredIn': 60, 'link': 'https://t.me/xrocket?start=inv_S2hHZCEV7PZ8KUp', 'activationsLeft': 1, 'totalActivations': 1}}
- amount - Кол-во токенов
- numPayments - кол-во активаций
- description - описание
- hiddenMessage - сообщение которое будет после оплаты
- commentsEnabled - комментарии для счета
- callbackUrl - Ссылка которая будет доступна после оплаты
- payload - никто не знает что оно делает
- expiredIn - таймер работы счета(0 - таймер отключен, к примеру 60 - счет будет просрочен через 60 секунд)
from donate.utils.tonrocket import Client app = Client(api_key="your key") print(app.get_me())
{'success': True, 'data': {'total': 6, 'offset': 0, 'limit': 100, 'results': [{'id': '223784', 'amount': 4.5e-05, 'minPayment': None, 'currency': 'TONCOIN', 'description': 'best thing in the world, 1 item', 'hiddenMessage': 'thank you', 'commentsEnabled': 0, 'payload': 'some custom payload I want to see in webhook or when I request invoice', 'callbackUrl': 'https://t.me/ton_rocket', 'created': '2023-10-19T06:34:57.000Z', 'paid': None, 'status': 'expired', 'expiredIn': 60, 'link': 'https://t.me/xrocket?start=inv_S2hHZCEV7PZ8KUp', 'activationsLeft': 1, 'totalActivations': 1}]
from donate.utils.tonrocket import Client app = Client(api_key="your key") print(app.check(id=223784))
{'success': True, 'data': {'id': '223784', 'amount': 4.5e-05, 'minPayment': None, 'currency': 'TONCOIN', 'description': 'best thing in the world, 1 item', 'hiddenMessage': 'thank you', 'commentsEnabled': 0, 'payload': 'some custom payload I want to see in webhook or when I request invoice', 'callbackUrl': 'https://t.me/ton_rocket', 'created': '2023-10-19T06:34:57.000Z', 'paid': None, 'status': 'expired', 'expiredIn': 60, 'link': 'https://t.me/xrocket?start=inv_S2hHZCEV7PZ8KUp', 'activationsLeft': 1, 'totalActivations': 1, 'payments': []}}
from donate.utils.tonrocket import Client app = Client(api_key="your key") print(app.delete(id=223784))
{'success': True}
CryptoBot
from donate.utils.crypto import Client app = Client(api_key="your key") print(app.get_me())
{'ok': True, 'result': {'app_id': 126081, 'name': 'Wambly Shrimp App', 'payment_processing_bot_username': 'CryptoBot'}, 'balance': [{'currency_code': 'USDT', 'available': '0'}, {'currency_code': 'TON', 'available': '0.0097'}, {'currency_code': 'BTC', 'available': '0'}, {'currency_code': 'LTC', 'available': '0'}, {'currency_code': 'ETH', 'available': '0'}, {'currency_code': 'BNB', 'available': '0'}, {'currency_code': 'TRX', 'available': '0'}, {'currency_code': 'USDC', 'available': '0'}]}
from donate.utils.crypto import Client data = { "asset": "TON", "amount": 0.01, "description": "test", "hidden_message": "test", "paid_btn_name": "viewItem", "paid_btn_url": "https://help.crypt.bot/crypto-pay-api#Invoice", "allow_comments": False, "allow_anonymous": False, "expires_in": 60} app = Client(api_key="your key") print(app.create(data=data))
{'ok': True, 'result': {'invoice_id': 3897550, 'status': 'active', 'hash': 'IVsFtiIr4CL7', 'asset': 'TON', 'amount': '0.01', 'pay_url': 'https://t.me/CryptoBot?start=IVsFtiIr4CL7', 'description': 'test', 'created_at': '2023-10-20T15:53:59.419Z', 'allow_comments': False, 'allow_anonymous': False, 'expiration_date': '2023-10-20T15:54:59.411Z', 'hidden_message': 'test', 'paid_btn_name': 'viewItem', 'paid_btn_url': 'https://help.crypt.bot/crypto-pay-api#Invoice'}}
- asset - токен
- amount - Кол-во токенов
- description - описание счета
- hidden_message - сообщение которое будет доступно после оплаты
- paid_btn_name(optional) - название для кнопки
- paid_btn_url(optional) - ссылка для этой же кнопки
- allow_comments(optional) - разрешение на комментарии
- allow_anonymous(optional) - разрешение на анонимный просмотр
- expires_in - когда счет станет не действительным(1-240000)
from donate.utils.crypto import Client data = { "user_id": 5968878656, "asset": "TON", "amount": 1, "spend_id": 623482423712389, "comment": "Hello", "disable_send_notification": False} app = Client(api_key="your key") print(app.transfer(data=data))
{'ok': True, 'result': {'transfer_id': 623482423712389, 'user_id': 5968878656, ...}
- user_id - телеграмм айди человека которому будем отправлять токены
- asset - название токена
- amount - кол-во токенов для передачи
- spend_id - уникальный айди, айди не должен повторятся!
- comment - комментарий к переводу
- disable_send_notification - если False то user_id получит сообщение про перевод, если True то user_id не получит сообщение
from donate.utils.crypto import Client data = {"invoice_ids": [3891640]} app = Client(api_key="your key") print(app.get_invoices(data=data))
{'ok': True, 'result': {'items': [{'invoice_id': 3891640, 'status': 'paid', 'hash': 'IVL3PjShk1xU', 'asset': 'TON', 'amount': '0.01', 'pay_url': 'https://t.me/CryptoBot?start=IVL3PjShk1xU', 'description': 'test', 'created_at': '2023-10-20T09:38:18.037Z', 'allow_comments': False, 'allow_anonymous': False, 'expiration_date': '2023-10-20T09:39:18.030Z', 'paid_at': '2023-10-20T09:38:54.021Z', 'paid_anonymously': False, 'hidden_message': 'test', 'paid_btn_name': 'viewItem', 'paid_btn_url': 'https://help.crypt.bot/crypto-pay-api#Invoice'}]}}
- asset(optional) - будет искать по тому токену который укажите
- status(optional) - будет искать все токены по статусу который укажите(к примеру "paid" - будет искать все счета которые оплатили)
- invoice_ids(optional) - будет искать все счета с айди которые укажите в формате списка []
from donate.utils.crypto import Client app = Client(api_key="your key") print(app.rates())
{'ok': True, 'result': [{'is_valid': True, 'source': 'USDT', 'target': 'RUB', 'rate': '96.81000000'}, {'is_valid': True, 'source': 'USDT', 'target': 'USD', 'rate': '1.00026015'}, {'is_valid': True, 'source': 'USDT', 'target': 'EUR', 'rate': '0.94448600'}, {'is_valid': True, 'source': 'USDT', 'target': 'BYN', 'rate': '3.29358300'}]
from donate.utils.crypto import Client app = Client(api_key="your key") print(app.currencies())
{'ok': True, 'result': [{'is_blockchain': False, 'is_stablecoin': True, 'is_fiat': False, 'name': 'Tether', 'code': 'USDT', 'url': 'https://tether.to/', 'decimals': 18}, {'is_blockchain': True, 'is_stablecoin': False, 'is_fiat': False, 'name': 'Toncoin', 'code': 'TON', 'url': 'https://ton.org/', 'decimals': 9}]
from donate.utils.tonrocket.types import User import asyncio async def main(): print(await User().user_agent()) asyncio.run(main())
Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.101 Safari/537.36
from donate.utils.tonrocket.types import User import asyncio async def main(): print(await User().timeline()) asyncio.run(main())
['2023-10-23T12:00:00', '2023-10-23T12:01:00', '2023-10-23T12:02:00', '2023-10-23T12:03:00', '2023-10-23T12:04:00', '2023-10-23T12:05:00', ...]
RuKassa
from donate.utils.rukassa import Client app = Client(token="your token") print(app.create(shop_id=1453, amount=100, data={"userId": "user"}))
{'id': 3513701, 'hash': 'eb84f5da74040dc7be1f304fb06b0f8b', 'url': 'https://pay.ruks.pro/?hash=eb84f5da74040dc7be1f304fb06b0f8b'}
- shop_id - ID магазина.
- amount - Сумма платежа.
- data - обьект передачи на сервер, при оплате счета мы сможем получить этот обьект через .get()
- token - API токен из настроек вашего мерчанта.
from donate.utils.rukassa import Client app = Client(token="Your token") print(app.info(shop_id=1453, id=3513701))
from donate.utils.rukassa import Client app = Client(token="Your token") print(app.withdraw_info(shop_id=1453, id=3513701))
from donate.utils.rukassa import Client app = Client(token="Your token") print(app.get_balance(email="email", password="password"))
from donate.utils.rukassa import Client app = Client(token="b35e5d1302ee1706b5171f0ef15b3999") print(app.create_withdraw(email="email", password="password", way="CARD", wallet="332328382", amount=100))
- email - Email пользователя.
- password - Пароль пользователя.
- way - Платежная система для вывода. Системы: QIWI, CARD, YOOMONEY, USDT, SBP
- wallet - Номер кошелька или карты, куда будут отправлены средства.
- amount - Сумма для вывода.
from donate.utils.rukassa import Client app = Client(token="b35e5d1302ee1706b5171f0ef15b3999") print(app.create_withdraw(email="email", password="password", id=0))
Примеры декораторов:
TonRocket
from donate.utils.tonrocket import Donate_init import asyncio data = { "amount": 0.000045, "numPayments": 1, "currency": "TONCOIN", "description": "best thing in the world, 1 item", "hiddenMessage": "thank you", "commentsEnabled": False, "callbackUrl": "https://t.me/ton_rocket", "payload": "some custom payload I want to see in webhook or when I request invoice", "expiredIn": 60 } @Donate_init(api_key="your key", data=data) async def say_hello(*args, **kwargs): user_id = kwargs.get("user_id") status = kwargs.get("status") if status == False: print(f"Не оплачено!") elif status != "paid": link = kwargs.get("new_data").get("data").get("link") print(f"Ссылка на оплату: {link}") else: print(f"Полеченные данные: status: {status}, айди покупателя: {user_id}") return None async def main(): await asyncio.create_task(say_hello()) return None if __name__ == "__main__": loop = asyncio.get_event_loop() loop.run_until_complete(main())
- Donate_init - передаем в декоратор данные и ключ
- user_id, status - изначально они равны None
- status:
- if status == False - Если счет не был оплачен за это время которое указано в expiredIn, то наш декоратор передает аргумент False в переменную status
- elif status != "paid" - Как я уже говорил что status изначально равняется None из-за чего - это сигнал скрипту о том что скрипт лишь запущен и нужно вывести ссылку в переменную
- else - можно заменить на elif status == "paid" - эта часть проверяет оплачен ли счет, если наш декоратор заметил что счет оплачен и передает аргумент paid в переменную status
- main - пред-функция с которой запускается главный скрипт
Types
Converter
from donate import * print(Converter(amount=100, from_="USD", to="Rub").convert())
- amount - количество токенов из from_
- from_ - валюта из которой будем переводить
- to - валюта в которую будем переводить
{'amount': 100.0, 'from': 'USD', 'converted_amount': 9235.0, 'to': 'RUB'}
Data
from donate import * print(Data().generator())
{'amount': 0.5076166886221487, 'numPayments': 1, 'currency': 'TONCOIN', 'description': 'Платеж за услуги', 'hiddenMessage': 'Операция завершена.', 'commentsEnabled': False, 'callbackUrl': 'https://t.me/ton_rocket', 'payload': 'some custom payload I want to see in webhook or when I request invoice', 'expiredIn': 60}
Контакты
[telegram channel](https://t.me/donatepython/)
[monitoring bot](https://t.me/MDLPyPI_bot/)
[Author](https://t.me/Redpiar)