Не могу сделать оплату в Telegram боте
Изучаю Python примерно 7 месяцев. Сейчас учусь делать телеграмм ботов. Итак у меня возникла проблема, что я не могу сделать систему оплаты в боте. Прошарил весь интернет, смотрел Youtube ролики, у ChatGPT тоже спрашивал, но ничего не помогает. Вот мой код: Файл bot.py
import asyncio
import logging
from interface import main_kb, subscribers
from aiogram import Bot, Dispatcher, types
from aiogram.filters import Command
from config import API_TOKEN, PROVIDER_TOKEN
logging.basicConfig(level=logging.INFO)
bot = Bot(API_TOKEN, parse_mode="HTML")
dp = Dispatcher()
user_states = {}
user_subscribers = ["подписчики", "подписчики русские", "подписчики с гарантией",
"подписчики высокого качества", "подписчики с высоким процентом онлайна",
"быстрые подписчики с гарантией",
"подписчики для закрытых каналов", "русские подписчики высокого качества",
"подпиcчики с премиум аккаунтами",
"подписчики с премиум аккаунтами | 50 % русские", "подписчики из сша", "подписчики из англии",
"подписчики из армении", "подписчики из грузии", "подписчики из казахстана высокого качества",
"подписчики из китая", "подписчики из узбекистана", "подписчики из индии"]
@dp.message(Command("start"))
async def start(message: types.Message):
await message.answer("Доброго времени суток!\n"
"Готовы бустануть свой Telegram канал?\n"
"Закажите подписчиков у нас и увидите результат уже сегодня!", reply_markup=main_kb)
@dp.message(lambda message: message.text == "FAQ")
async def faq(message: types.Message):
await message.answer("<b>Внимательно ознакомьтесь с описанием услуги, наличием по ней гарантии.\n"
"Это поможет избежать лишних вопросов в будущем</b>\n\n")
await message.answer("Какую лучше услугу вы посоветуете купить?\n\n")
await message.answer("<b>Обычно более дорогие услуги имеют выше качество, но решать все равно только Вам!\n"
"Советуем ознакомится с описанием услуг перед заказом, чтобы понять в чем их разница.</b>")
await message.answer("Что такое 'с гарантией' и 'без гарантии'?")
await message.answer("<b>Нет гарантий – это самая дешёвая и нестабильная услуга,"
"у которой могут быть задержки накрутки до суток, возможны списания\n"
"На данную услугу мы не даем гарантию в том, что весь заказанный материал придет к"
"Вам на страницу,"
"поэтому заказывая услугу, без гарантии, Вы принимаете все вышеуказанные риски на себя.\n"
"С гарантией - эта услуга более стабильна в сроках, количестве и,"
"если произойдут списания соцсетью накрученного материала,"
"Вам нужно будет обратиться в нашу техподдержку с описанием проблемы.\n"
"Мы проверим, и если Ваша претензия обоснована, то устраним недочеты и все восстановим.</b>")
await message.answer("Если подписчики отписываются?")
await message.answer("<b>Если Вы выбрали услугу «нет гарантии», то списания соц.сетью возможны,"
"и мы не даем Вам гарантию на списания.\n"
"Если услуга «с гарантией», то напишите в тех.поддержку.\n"
"Мы обязательно проверим заказ и исправим недочеты.</b>")
await message.answer("Тех.поддержка: @I_am_Lenya")
@dp.message(lambda message: message.text == "Накрутить")
async def wind_up(message: types.Message):
await message.answer("Выберите действие из меню:", reply_markup=subscribers)
@dp.message(lambda message: message.text.lower() in user_subscribers)
async def ask_for_subscribers(message: types.Message):
await message.answer("Сколько подписчиков тебе надо накрутить?(выберите число, которое нацело делиться на 100)")
user_states[message.from_user.id] = message.text.lower()
@dp.message()
async def message_handler_one(message: types.Message):
user_id = message.from_user.id
if user_id in user_states:
if message.text.isdigit():
number_of_subscribers = int(message.text)
if number_of_subscribers % 100 == 0:
if user_states[user_id] == "подписчики русские":
price = (number_of_subscribers / 100) * 15
await message.answer("Для этой услуги если гарантия в 7 дней.")
await message.answer("Условия для выполнения заказа:\n\n"
"1. Каналу не менее 3 дней\n\n"
"2. Нет запрещенных слов"
"(связанных с 18+, политикой, оружием, наркотиками, скамом, азартными играми"
", пирамидами, ставками, вебкамом, порно, криптой и тд)\n\n"
"3. За удаленные/переименованные/заблокированные/переведенные"
"в закрытые каналы возвраты не предусмотрены!.\n\n"
"4. Если для вступления нужно подавать заявку,"
"то услуга может не сработать, гарантию на подобные каналы мы не даем!")
await message.answer("Стоимость за каждые 100 подписчиков: 15₽")
elif user_states[user_id] == "подписчики":
price = number_of_subscribers / 10
await message.answer("У этой услуги нету гарантии")
await message.answer("Условия для выполнения заказа:\n\n1. Каналу не менее 3 дней\n\n2. Нет запрещенных слов (связанных с 18+, политикой, оружием, наркотиками, скамом, азартными играми, пирамидами, ставками, вебкамом, порно, криптой и тд)\n\n3. За удаленные/переименованные/заблокированные/переведенные в закрытые каналы возвраты не предусмотрены!.\n\n4.Если для вступления нужно подавать заявку, то услуга может не сработать, гарантию на подобные каналы мы не даем!")
await message.answer("Стоимость за каждые 100 подписчиков: 10₽")
elif user_states[user_id] == "подписчики с гарантией":
price = (number_of_subscribers / 100) * 17
await message.answer("Для этой услуги есть гарантия в 60 дней")
await message.answer("Условия для выполнения заказа:\n\n1. Каналу не менее 3 дней\n\n2. Нет запрещенных слов (связанных с 18+, политикой, оружием, наркотиками, скамом, азартными играми, пирамидами, ставками, вебкамом, порно, криптой и тд)\n\n3. За удаленные/переименованные/заблокированные/переведенные в закрытые каналы возвраты не предусмотрены!.\n\n4.Если для вступления нужно подавать заявку, то услуга может не сработать, гарантию на подобные каналы мы не даем!")
await message.answer("Стоимость за каждые 100 подписчиков: 17₽")
elif user_states[user_id] == "подписчики высокого качества":
price = (number_of_subscribers / 100) * 24
await message.answer("Для этой услуги есть гарантия в 30 дней.")
await message.answer("Условия для выполнения заказа:\n\n1. Каналу не менее 3 дней\n\n2. Нет запрещенных слов (связанных с 18+, политикой, оружием, наркотиками, скамом, азартными играми, пирамидами, ставками, вебкамом, порно, криптой и тд)\n\n3. За удаленные/переименованные/заблокированные/переведенные в закрытые каналы возвраты не предусмотрены!.\n\n4.Если для вступления нужно подавать заявку, то услуга может не сработать, гарантию на подобные каналы мы не даем!")
await message.answer("Стоимость за каждые 100 подписчиков: 24₽")
elif user_states[user_id] == "подписчики с высоким процентом онлайна":
price = (number_of_subscribers / 100) * 35
await message.answer("У этой услуги нету гарантии")
await message.answer("Условия для выполнения заказа:\n\n1. Каналу не менее 3 дней\n\n2. Нет запрещенных слов (связанных с 18+, политикой, оружием, наркотиками, скамом, азартными играми, пирамидами, ставками, вебкамом, порно, криптой и тд)\n\n3. За удаленные/переименованные/заблокированные/переведенные в закрытые каналы возвраты не предусмотрены!.\n\n4.Если для вступления нужно подавать заявку, то услуга может не сработать, гарантию на подобные каналы мы не даем!")
await message.answer("Стоимость за каждые 100 подписчиков: 35₽")
elif user_states[user_id] == "быстрые подписчики с гарантией":
price = (number_of_subscribers / 100) * 26
await message.answer("Для этой услуги есть гарантия в 50 дней!")
await message.answer("Условия для выполнения заказа:\n\n1. Каналу не менее 3 дней\n\n2. Нет запрещенных слов (связанных с 18+, политикой, оружием, наркотиками, скамом, азартными играми, пирамидами, ставками, вебкамом, порно, криптой и тд)\n\n3. За удаленные/переименованные/заблокированные/переведенные в закрытые каналы возвраты не предусмотрены!.\n\n4.Если для вступления нужно подавать заявку, то услуга может не сработать, гарантию на подобные каналы мы не даем!")
await message.answer("Стоимость за каждые 100 подписчиков: 26₽")
elif user_states[user_id] == "подписчики для закрытых каналов":
price = (number_of_subscribers / 100) * 27
await message.answer("Для этой услуги есть гарантия в 30 дней!")
await message.answer("Условия для выполнения заказа:\n\n1. Каналу не менее 3 дней\n\n2. Нет запрещенных слов (связанных с 18+, политикой, оружием, наркотиками, скамом, азартными играми, пирамидами, ставками, вебкамом, порно, криптой и тд)\n\n3. За удаленные/переименованные/заблокированные/переведенные в закрытые каналы возвраты не предусмотрены!.\n\n4.Если для вступления нужно подавать заявку, то услуга может не сработать, гарантию на подобные каналы мы не даем!")
await message.answer("Стоимость за каждые 100 подписчиков: 27₽")
elif user_states[user_id] == "русские подписчики высокого качества":
price = (number_of_subscribers / 100) * 35
await message.answer("Для этой услуги есть гарантия в 30 дней!")
await message.answer("Условия для выполнения заказа:\n\n1. Каналу не менее 3 дней\n\n2. Нет запрещенных слов (связанных с 18+, политикой, оружием, наркотиками, скамом, азартными играми, пирамидами, ставками, вебкамом, порно, криптой и тд)\n\n3. За удаленные/переименованные/заблокированные/переведенные в закрытые каналы возвраты не предусмотрены!.\n\n4.Если для вступления нужно подавать заявку, то услуга может не сработать, гарантию на подобные каналы мы не даем!")
await message.answer("Стоимость за каждые 100 подписчиков: 35₽")
elif user_states[user_id] == "подпиcчики с премиум аккаунтами":
price = (number_of_subscribers / 100) * 212
await message.answer("Для этой услуги есть гарантия в 30 дней!")
await message.answer("Условия для выполнения заказа:\n\n1. Каналу не менее 3 дней\n\n2. Нет запрещенных слов (связанных с 18+, политикой, оружием, наркотиками, скамом, азартными играми, пирамидами, ставками, вебкамом, порно, криптой и тд)\n\n3. За удаленные/переименованные/заблокированные/переведенные в закрытые каналы возвраты не предусмотрены!.\n\n4.Если для вступления нужно подавать заявку, то услуга может не сработать, гарантию на подобные каналы мы не даем!")
await message.answer("Стоимость за каждые 100 подписчиков: 212₽")
elif user_states[user_id] == "подписчики с премиум аккаунтами | 50 % русские":
price = (number_of_subscribers / 100) * 482
await message.answer("Для этой услуги есть гарантия в 30 дней!")
await message.answer("Условия для выполнения заказа:\n\n1. Каналу не менее 3 дней\n\n2. Нет запрещенных слов (связанных с 18+, политикой, оружием, наркотиками, скамом, азартными играми, пирамидами, ставками, вебкамом, порно, криптой и тд)\n\n3. За удаленные/переименованные/заблокированные/переведенные в закрытые каналы возвраты не предусмотрены!.\n\n4.Если для вступления нужно подавать заявку, то услуга может не сработать, гарантию на подобные каналы мы не даем!")
await message.answer("Стоимость за каждые 100 подписчиков: 482₽")
elif user_states[user_id] == "подписчики из сша":
price = (number_of_subscribers / 100) * 37
await message.answer("Для этой услуги есть гарантия в 15 дней!")
await message.answer("Условия для выполнения заказа:\n\n1. Каналу не менее 3 дней\n\n2. Нет запрещенных слов (связанных с 18+, политикой, оружием, наркотиками, скамом, азартными играми, пирамидами, ставками, вебкамом, порно, криптой и тд)\n\n3. За удаленные/переименованные/заблокированные/переведенные в закрытые каналы возвраты не предусмотрены!.\n\n4.Если для вступления нужно подавать заявку, то услуга может не сработать, гарантию на подобные каналы мы не даем!")
await message.answer("Стоимость за каждые 100 подписчиков: 37₽")
elif user_states[user_id] == "подписчики из англии":
price = (number_of_subscribers / 100) * 32
await message.answer("Для этой услуги есть гарантия в 7 дней!")
await message.answer("Условия для выполнения заказа:\n\n1. Каналу не менее 3 дней\n\n2. Нет запрещенных слов (связанных с 18+, политикой, оружием, наркотиками, скамом, азартными играми, пирамидами, ставками, вебкамом, порно, криптой и тд)\n\n3. За удаленные/переименованные/заблокированные/переведенные в закрытые каналы возвраты не предусмотрены!.\n\n4.Если для вступления нужно подавать заявку, то услуга может не сработать, гарантию на подобные каналы мы не даем!")
await message.answer("Стоимость за каждые 100 подписчиков: 32₽")
elif user_states[user_id] == "подписчики из армении":
price = (number_of_subscribers / 100) * 152
await message.answer("Для этой услуги есть гарантия в 60 дней!")
await message.answer("Условия для выполнения заказа:\n\n1. Каналу не менее 3 дней\n\n2. Нет запрещенных слов (связанных с 18+, политикой, оружием, наркотиками, скамом, азартными играми, пирамидами, ставками, вебкамом, порно, криптой и тд)\n\n3. За удаленные/переименованные/заблокированные/переведенные в закрытые каналы возвраты не предусмотрены!.\n\n4.Если для вступления нужно подавать заявку, то услуга может не сработать, гарантию на подобные каналы мы не даем!")
await message.answer("Стоимость за каждые 100 подписчиков: 152₽")
elif user_states[user_id] == "подписчики из грузии":
price = (number_of_subscribers / 100) * 132
await message.answer("Для этой услуги есть гарантия в 60 дней!")
await message.answer("Условия для выполнения заказа:\n\n1. Каналу не менее 3 дней\n\n2. Нет запрещенных слов (связанных с 18+, политикой, оружием, наркотиками, скамом, азартными играми, пирамидами, ставками, вебкамом, порно, криптой и тд)\n\n3. За удаленные/переименованные/заблокированные/переведенные в закрытые каналы возвраты не предусмотрены!.\n\n4.Если для вступления нужно подавать заявку, то услуга может не сработать, гарантию на подобные каналы мы не даем!")
await message.answer("Стоимость за каждые 100 подписчиков: 132₽")
elif user_states[user_id] == "подписчики из казахстана высокого качества":
price = (number_of_subscribers / 100) * 132
await message.answer("У этой услуги нету гарантии")
await message.answer("Условия для выполнения заказа:\n\n1. Каналу не менее 3 дней\n\n2. Нет запрещенных слов (связанных с 18+, политикой, оружием, наркотиками, скамом, азартными играми, пирамидами, ставками, вебкамом, порно, криптой и тд)\n\n3. За удаленные/переименованные/заблокированные/переведенные в закрытые каналы возвраты не предусмотрены!.\n\n4.Если для вступления нужно подавать заявку, то услуга может не сработать, гарантию на подобные каналы мы не даем!")
await message.answer("Стоимость за каждые 100 подписчиков: 132₽")
elif user_states[user_id] == "подписчики из китая":
price = (number_of_subscribers / 100) * 32
await message.answer("У этой услуги нету гарантии")
await message.answer("Условия для выполнения заказа:\n\n1. Каналу не менее 3 дней\n\n2. Нет запрещенных слов (связанных с 18+, политикой, оружием, наркотиками, скамом, азартными играми, пирамидами, ставками, вебкамом, порно, криптой и тд)\n\n3. За удаленные/переименованные/заблокированные/переведенные в закрытые каналы возвраты не предусмотрены!.\n\n4.Если для вступления нужно подавать заявку, то услуга может не сработать, гарантию на подобные каналы мы не даем!")
await message.answer("Стоимость за каждые 100 подписчиков: 32₽")
elif user_states[user_id] == "подписчики из узбекистана":
price = (number_of_subscribers / 100) * 132
await message.answer("Для этой услуги есть гарантия в 60 дней!")
await message.answer("Условия для выполнения заказа:\n\n1. Каналу не менее 3 дней\n\n2. Нет запрещенных слов (связанных с 18+, политикой, оружием, наркотиками, скамом, азартными играми, пирамидами, ставками, вебкамом, порно, криптой и тд)\n\n3. За удаленные/переименованные/заблокированные/переведенные в закрытые каналы возвраты не предусмотрены!.\n\n4.Если для вступления нужно подавать заявку, то услуга может не сработать, гарантию на подобные каналы мы не даем!")
await message.answer("Стоимость за каждые 100 подписчиков: 132₽")
elif user_states[user_id] == "подписчики из индии":
price = (number_of_subscribers / 100) * 25
await message.answer("Для этой услуги есть гарантия в 30 дней!")
await message.answer("Условия для выполнения заказа:\n\n1. Каналу не менее 3 дней\n\n2. Нет запрещенных слов (связанных с 18+, политикой, оружием, наркотиками, скамом, азартными играми, пирамидами, ставками, вебкамом, порно, криптой и тд)\n\n3. За удаленные/переименованные/заблокированные/переведенные в закрытые каналы возвраты не предусмотрены!.\n\n4.Если для вступления нужно подавать заявку, то услуга может не сработать, гарантию на подобные каналы мы не даем!")
await message.answer("Стоимость за каждые 100 подписчиков: 25₽")
else:
await message.answer("Вы ничего не выбрали из списка")
await message.answer(f"Стоимость выполнения услуги: {price}₽")
else:
await message.answer("Количество подписчиков должно быть кратно 100.\n"
"Пожалуйста, введите корректное значение. Нажмите /start, чтобы попробовать ещё раз.")
del user_states[user_id]
else:
await message.answer("Пожалуйста, введите корректное число подписчиков")
else:
pass
async def main():
await bot.delete_webhook(drop_pending_updates=True)
await dp.start_polling(bot)
if __name__ == "__main__":
asyncio.run(main())
Файл interface.py
from aiogram.types import ReplyKeyboardMarkup, KeyboardButton
main_kb = ReplyKeyboardMarkup(
keyboard=[
[
KeyboardButton(text="FAQ")
],
[
KeyboardButton(text="Накрутить")
]
],
resize_keyboard=True
)
subscribers = ReplyKeyboardMarkup(
keyboard=[
[
KeyboardButton(text="Подписчики"),
KeyboardButton(text="Подписчики Русские")
],
[
KeyboardButton(text="Подписчики с гарантией"),
KeyboardButton(text="Подписчики высокого качества")
],
[
KeyboardButton(text="Подписчики с высоким процентом онлайна"),
KeyboardButton(text="Быстрые подписчики с гарантией")
],
[
KeyboardButton(text="Подписчики для закрытых каналов"),
KeyboardButton(text="Русские подписчики высокого качества")
],
[
KeyboardButton(text="Подписчики с премиум аккаунтами"),
KeyboardButton(text="Подписчики с премиум аккаунтами | 50 % русские")
],
[
KeyboardButton(text="Подписчики из США"),
KeyboardButton(text="Подписчики из Англии")
],
[
KeyboardButton(text="Подписчики из Армении"),
KeyboardButton(text="Подписчики из Грузии")
],
[
KeyboardButton(text="Подписчики из Казахстана высокого качества"),
KeyboardButton(text="Подписчики из Китая")
],
[
KeyboardButton(text="Подписчики из Узбекистана"),
KeyboardButton(text="Подписчики из Индии")
]
],
one_time_keyboard=True
)
Файл config.py
API_TOKEN = "MY_API_KEY"
PROVIDER_TOKEN = "MY_PROVIDER_TOKEN"
Помогите пожалуйста!!!