mirror of
https://github.com/LonamiWebs/Telethon.git
synced 2025-08-02 19:20:09 +03:00
Add files via upload
This commit is contained in:
parent
b4c6f0bebf
commit
2b66d26c58
|
@ -3,19 +3,38 @@ from telethon import TelegramClient, events, types, functions
|
||||||
import asyncio
|
import asyncio
|
||||||
import logging
|
import logging
|
||||||
import tracemalloc
|
import tracemalloc
|
||||||
|
import os
|
||||||
|
import time
|
||||||
|
import sys
|
||||||
|
|
||||||
loop = asyncio.get_event_loop()
|
loop = asyncio.get_event_loop()
|
||||||
|
|
||||||
api_id = 0
|
|
||||||
api_hash = ""
|
|
||||||
provider_token = "" # https://core.telegram.org/bots/payments#getting-a-token
|
provider_token = "" # https://core.telegram.org/bots/payments#getting-a-token
|
||||||
|
|
||||||
tracemalloc.start()
|
tracemalloc.start()
|
||||||
logging.basicConfig(format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
|
logging.basicConfig(format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
|
||||||
level=logging.WARN)
|
level=logging.WARNING)
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
bot = TelegramClient("bot_test_payment_telethon", api_id, api_hash)
|
|
||||||
|
def get_env(name, message, cast=str):
|
||||||
|
if name in os.environ:
|
||||||
|
return os.environ[name]
|
||||||
|
while True:
|
||||||
|
value = input(message)
|
||||||
|
try:
|
||||||
|
return cast(value)
|
||||||
|
except ValueError as e:
|
||||||
|
print(e, file=sys.stderr)
|
||||||
|
time.sleep(1)
|
||||||
|
|
||||||
|
|
||||||
|
bot = TelegramClient(
|
||||||
|
os.environ.get('TG_SESSION', 'payment'),
|
||||||
|
get_env('TG_API_ID', 'Enter your API ID: ', int),
|
||||||
|
get_env('TG_API_HASH', 'Enter your API hash: '),
|
||||||
|
proxy=None
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
# That event is handled when customer enters his card/etc, on final pre-checkout
|
# That event is handled when customer enters his card/etc, on final pre-checkout
|
||||||
|
@ -75,12 +94,16 @@ def generate_invoice(price_label: str, price_amount: int, currency: str, title:
|
||||||
prices=[price], # there could be a couple of prices.
|
prices=[price], # there could be a couple of prices.
|
||||||
test=True, # if you're working with test token
|
test=True, # if you're working with test token
|
||||||
|
|
||||||
# next params are saying for themselves
|
# params for requesting specific fields
|
||||||
name_requested=False,
|
name_requested=False,
|
||||||
phone_requested=False,
|
phone_requested=False,
|
||||||
email_requested=False,
|
email_requested=False,
|
||||||
shipping_address_requested=False,
|
shipping_address_requested=False,
|
||||||
|
|
||||||
|
# if price changes depending on shipping
|
||||||
flexible=False,
|
flexible=False,
|
||||||
|
|
||||||
|
# send data to provider
|
||||||
phone_to_provider=False,
|
phone_to_provider=False,
|
||||||
email_to_provider=False
|
email_to_provider=False
|
||||||
|
|
||||||
|
@ -91,10 +114,16 @@ def generate_invoice(price_label: str, price_amount: int, currency: str, title:
|
||||||
invoice=invoice,
|
invoice=invoice,
|
||||||
payload=payload.encode("UTF-8"), # payload, which will be sent to next 2 handlers
|
payload=payload.encode("UTF-8"), # payload, which will be sent to next 2 handlers
|
||||||
provider=provider_token,
|
provider=provider_token,
|
||||||
provider_data=types.DataJSON("{}"), # honestly, no idea.
|
|
||||||
|
provider_data=types.DataJSON("{}"),
|
||||||
|
# data about the invoice, which will be shared with the payment provider. A detailed description of
|
||||||
|
# required fields should be provided by the payment provider.
|
||||||
|
|
||||||
start_param=start_param,
|
start_param=start_param,
|
||||||
# start_param will be passed with UpdateBotPrecheckoutQuery,
|
# start_param will be passed with UpdateBotPrecheckoutQuery,
|
||||||
# I don't really know why is it needed, I guess like payload.
|
# I don't really know why is it needed, I guess like payload.
|
||||||
|
# from PTB docs: Unique deep-linking parameter that can be used to
|
||||||
|
# generate this invoice when used as a start parameter.
|
||||||
|
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -106,38 +135,40 @@ async def start_handler(event: events.NewMessage.Event):
|
||||||
|
|
||||||
@bot.on(events.NewMessage(pattern="/product_a"))
|
@bot.on(events.NewMessage(pattern="/product_a"))
|
||||||
async def start_handler(event: events.NewMessage.Event):
|
async def start_handler(event: events.NewMessage.Event):
|
||||||
await event.respond(
|
await bot.send_message(
|
||||||
"here you go!",
|
event.chat_id, "Sending invoice A",
|
||||||
file=generate_invoice(
|
file=generate_invoice(
|
||||||
"Pay", 10000, "RUB", "Title A", "description A", "product A", "abc"
|
price_label="Pay", price_amount=10000, currency="RUB", title="Title A", description="description A",
|
||||||
|
payload="product A", start_param="abc"
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@bot.on(events.NewMessage(pattern="/product_b"))
|
@bot.on(events.NewMessage(pattern="/product_b"))
|
||||||
async def start_handler(event: events.NewMessage.Event):
|
async def start_handler(event: events.NewMessage.Event):
|
||||||
await event.respond(
|
await bot.send_message(
|
||||||
"here you go!",
|
event.chat_id, "Sending invoice B",
|
||||||
file=generate_invoice(
|
file=generate_invoice(
|
||||||
"Pay", 20000, "RUB", "Title B", "description B", "product B", "abc"
|
price_label="Pay", price_amount=20000, currency="RUB", title="Title B", description="description B",
|
||||||
|
payload="product B", start_param="abc"
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@bot.on(events.NewMessage(pattern="/product_c"))
|
@bot.on(events.NewMessage(pattern="/product_c"))
|
||||||
async def start_handler(event: events.NewMessage.Event):
|
async def start_handler(event: events.NewMessage.Event):
|
||||||
await event.respond(
|
await bot.send_message(
|
||||||
"here you go!",
|
event.chat_id, "Sending invoice C",
|
||||||
file=generate_invoice(
|
file=generate_invoice(
|
||||||
"Pay", 50000, "RUB", "Title C", "description c - shall cause an error", "product C", "abc"
|
price_label="Pay", price_amount=50000, currency="RUB", title="Title C",
|
||||||
|
description="description c - shall cause an error", payload="product C", start_param="abc"
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
async def main():
|
async def main():
|
||||||
await bot.start()
|
await bot.start()
|
||||||
print(f"Started.")
|
await bot.run_until_disconnected()
|
||||||
await asyncio.gather(bot.run_until_disconnected())
|
|
||||||
|
|
||||||
|
|
||||||
loop.run_until_complete(main())
|
loop.run_until_complete(main())
|
||||||
|
|
Loading…
Reference in New Issue
Block a user