So, a bot that performs the necessary functionality for classes is created. There is already some part - I made buttons and connected payment.
Now the site that provides payment acceptance is being verified and approved.
After I finish this bot, I will move on to creating online lessons. And then - work on the bot for #selfdevelopmentclub
Python telegram bot code
import telebot
from telebot import types # для указание типов
import config
from telebot.types import LabeledPrice, ShippingOption
provider_token = 'xxxx' # @BotFather -> Bot Settings -> Payments
bot = telebot.TeleBot(config.TOKEN)
@bot.message_handler(commands=['start'])
def start(message):
markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
btn1 = types.KeyboardButton("❓ Опис зустрічей")
btn2 = types.KeyboardButton("Голосування")
btn3 = types.KeyboardButton("🔥 Придбати квіток")
btn4 = types.KeyboardButton("Контакти/допомога")
btn5 = types.KeyboardButton("Оферта")
markup.add(btn1, btn2, btn3, btn4, btn5)
bot.send_message(message.chat.id, text='Привет, {0.first_name}! Я бот для проекту "xxxx", посилання на канал проекту: @xxxx\n\r\n\rЗ допомогою бота ти можешь дізнатись опис та план зустрічей, проголосувати (на зустрічах), та придбати квітки. Будь які питання, будь ласка пишіть сюди: @xxxx'.format(message.from_user), reply_markup=markup)
#@bot.message_handler(commands=['terms'])
#def command_terms(message):
#@bot.message_handler(commands=['buy'])
#def command_pay(message):
@bot.shipping_query_handler(func=lambda query: True)
def shipping(shipping_query):
print(shipping_query)
bot.answer_shipping_query(shipping_query.id, ok=True, shipping_options=shipping_options,
error_message='Oh, seems like our Dog couriers are having a lunch right now. Try again later!')
@bot.pre_checkout_query_handler(func=lambda query: True)
def checkout(pre_checkout_query):
bot.answer_pre_checkout_query(pre_checkout_query.id, ok=True,
error_message="Aliens tried to steal your card's CVV, but we successfully protected your credentials,"
" try to pay again in a few minutes, we need a small rest.")
@bot.message_handler(content_types=['successful_payment'])
def got_payment(message):
bot.send_message(message.chat.id,
'Дякую! Ви придбали {} {}
'
'Чекаємо вас 19.01.23 в 18:00 по адресі Дарвіна, 1. Якщо є питання - тисніть кнопку "Контакти/Допомога". До зустрічі!'.format(
message.successful_payment.total_amount / 100, message.successful_payment.currency),
parse_mode='Markdown')
@bot.message_handler(content_types=['text'])
def func(message):
if(message.text == "❓ Опис зустрічей"):
markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
btn1 = types.KeyboardButton("Зустрічі що четверга")
btn2 = types.KeyboardButton("Зустрічі в малому форматі")
btn3 = types.KeyboardButton("Шоу 'Конкурс Талантів'")
back = types.KeyboardButton("Вернуться в главное меню")
markup.add(btn1, btn2, btn3, back)
bot.send_message(message.chat.id, text="Будь ласка, оберить зустріч", reply_markup=markup)
elif(message.text == "Голосування"):
markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
btn1 = types.KeyboardButton("Как меня зовут?")
btn2 = types.KeyboardButton("Что я могу?")
back = types.KeyboardButton("Вернуться в главное меню")
markup.add(btn1, btn2, back)
bot.send_message(message.chat.id, text="Задай мне вопрос", reply_markup=markup)
elif(message.text == "🔥 Придбати квіток"):
markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
btn1 = types.KeyboardButton("Квіток на 19.01")
btn2 = types.KeyboardButton("Квіток глядача на конкурс")
back = types.KeyboardButton("Вернуться в главное меню")
markup.add(btn1, btn2, back)
bot.send_message(message.chat.id, text="Тут буде виводитись чи є в вас квіток. Ще в розробці, дякую.", reply_markup=markup)
elif(message.text == "Квіток на 19.01"):
bot.send_message(message.chat.id,
"Вітаю! Це перевірка праці бота."
" Для теста використовуйте: `4242 4242 4242 4242`"
"\n\nЦе тестовий спроба:", parse_mode='Markdown')
bot.send_invoice(
message.chat.id, #chat_id
'Квіток на зустріч 19.01.2023', #title
'Запрошую вас на 12 зустріч\n\rчетверг\n\r19.01.2023\n\rз 18:00 до 20:50\n\rв центрі Києва!', #description
'Квіток на 19.01', #invoice_payload
provider_token, #provider_token
'uah', #currency
prices, #prices
photo_url='',
photo_height=512, # !=0/None or picture won't be shown
photo_width=512,
photo_size=512,
is_flexible=False, # True If you need to set up Shipping Fee
start_parameter='xxxx19012023')
elif(message.text == "Квіток глядача на конкурс"):
bot.send_message(message.chat.id,
"Вітаю! Це перевірка праці бота."
" Для теста використовуйте: `4242 4242 4242 4242`"
"\n\nЦе тестовий спроба:", parse_mode='Markdown')
bot.send_invoice(
message.chat.id, #chat_id
'Квіток глядача на шоу "Конкурс талантів"', #title
'Квіток на шоу', #description
'Квіток глядача на шоу "Конкурс талантів"', #invoice_payload
provider_token, #provider_token
'uah', #currency
prices, #prices
photo_url='',
photo_height=512, # !=0/None or picture won't be shown
photo_width=512,
photo_size=512,
is_flexible=False, # True If you need to set up Shipping Fee
start_parameter='xxxxshow')
elif(message.text == "Зустрічі що четверга"):
bot.send_message(message.chat.id, "Кожен четверг проходить зустріч. Приклад звіту зустрічі від 12.01: https://t.me/xxxx/208, приклад анонсу: https://t.me/xxxx/204\n\r\n\rПлан заняття:\n\r\n\r18:00 Знайомство\n\r18:20 Розминка\n\r18:35 Повторення базових моментів імпровізації:\n\r\n\r1. Хто я. Де я. Яка в мене мета\n\r2. Приймання реальності партнера\n\r\n\r18:45 Тренаж (робимо вправи на аспекти імпровізації):\n\r\n\r3. Використовувати простір (виправдано!) та уровні\n\r4. Жести\n\r5. Деталі та конкертика\n\r6. Драматургія (зав'язка, кульмінація, фінал)\n\r\n\r19:15 Час на тренувальній виступ\n\r19:20 Перерва\n\r19:30 Вправа на драматургію.\n\r19:40 Тренування голосування з ботом\n\r19:42 Початок гри сценок\n\r20:10 Церемонія нагородженя переможника20:20 Малювання для передачі своїх відчуттів\n\r20:40 Завершення зустрічі\n\r\n\r Анонси ви можете побачити у каналі @xxxx\n\rДякую за увагу!")
elif(message.text == "Контакти/допомога"):
bot.send_message(message.chat.id,
'Цей бот дає можливость дізнатись про зустрічі - це кнопка "Опис зустрічей", голосувати на зустрічах - кнопка "Голосувати", та придбати квітки - кнопка "Придбати квітки".\n\r\n\rЯкщо ви вже придбали квітки, то у розділі придбати квітки вам буде про це написано.\n\r\n\rВи можете знайти інформацію о проекте на головному телеграм каналі: @xxxx. Також є можливость спілкуватись з іншими участниками в телеграм-чаті: xxxЯкщо у вас залишилось будь яке запитання, ви можете дізнатись за телефоном xxx, а також в телеграммі: : @xxxx Дякую Вам.')
elif(message.text == "Оферта"):
bot.send_message(message.chat.id,
'Дякую за вашу зацікавленність. Оферту ви можете побачити за посиланням: https://telegra.ph/PUBL%D0%86CHNIJ-DOGOV%D0%86R-OFERTA-01-17')
elif(message.text == "Зустрічі в малому форматі"):
bot.send_message(message.chat.id, "Це меньш формальні зустрічі, 4-5 участників. Ми збираємося тренуватися грати імпровізацію, репетувати виступ, робити відео. Для запису пишіть: @xxxx")
elif(message.text == "Шоу 'Конкурс Талантів'"):
bot.send_message(message.chat.id, "Вітаю! Ви дивились мультфільм 'Співай' ('Song', 2016)?\n\rВ ньому головні герої разом будують конкурс-шоу. Вони об'єднуються заради втілення своїх мрій. Ось так і я, як та коала в мультику - роблю конкурс :)\n\rЗапрошую Вас до першого шоу-конкурса талантів від проекту 'xxxx'.\n\rМи будемо покроково поліпшувати і себе і це шоу! Приєднатись легко - напишіть у приват. @xxxx.\n\rНаразі потрібно 20 учасників. Формат виступу - вокал (спів), танець, театральна мініатюра, монолог (стендап), поезія (вірші).\n\rПереможця обирають глядачі, за допомогою телеграм бота. Приз 1000 грн. А я буду шукати спонсорів, щоб призи мотивували Вас, для подальшої участі в наступних шоу. \n\rУчасть - безкоштовно.\n\rБуде фото та відео зйомка. \n\r\n\rПосилання на анонс на каналі: https://t.me/xxxx/209\n\rДякую за увагу.")
elif message.text == "Что я могу?":
bot.send_message(message.chat.id, text="Поздороваться с читателями")
elif (message.text == "Вернуться в главное меню"):
markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
button1 = types.KeyboardButton("❓ Опис зустрічей")
button2 = types.KeyboardButton("Голосування")
button3 = types.KeyboardButton("🔥 Придбати квіток")
button4 = types.KeyboardButton("Контакти/допомога")
button5 = types.KeyboardButton("Оферта")
markup.add(button1, button2,button3,button4,button5)
bot.send_message(message.chat.id, text="Вы повернулись в головне меню", reply_markup=markup)
else:
bot.send_message(message.chat.id, text="На таку команду я не запрограмован..")
prices = [LabeledPrice(label='Квіток 19.01', amount=10000)]
shipping_options = [
ShippingOption(id='instant', title='WorldWide Teleporter').add_price(LabeledPrice('Teleporter', 1000)),
ShippingOption(id='pickup', title='Local pickup').add_price(LabeledPrice('Pickup', 300))]
bot.infinity_polling(skip_pending = True)