extern crate postgres;
use std::error::Error;
use teloxide::{
payloads::SendMessageSetters,
prelude::*,
types::{
InlineKeyboardButton, InlineKeyboardMarkup, InlineQueryResultArticle, InputMessageContent,
InputMessageContentText, Me, User,
},
utils::command::BotCommands,
};
use std::env;
use dotenvy::dotenv;
use postgres::{Client, NoTls};
use std::thread;
mod database;
const PRIVATE_CHAT_ID : &str = "-832535905";
const HELLO_MESSAGE : &str ="Приветствую тебя юнный падаван! Я протокольный дроид C-3PO, меня создали чтобы помочь тебе стать джедаем, а пока я могу добавить тебя в тренировочный лагерь.
Для этого тебе нужно выбрать команду Регистрация, в списке ниже.";
const MESSAGE_FOR_REGISTERING : &str = "Вы зарегистрированы в боте, для того чтобы попасть в закрытый чат - пополните баланс
Как пополнить баланс:";
const MESSAGE_FOR_BALANCE : &str ="Ваша подписка действует до: ";
const MESSAGE_FOR_INSTRUCTION : &str ="Здесь будут инструкции по пополнению баланса...";
const MESSAGE_FOR_SUPPORT : &str ="По всем возникающим вопросам нажмите на ссылку: @Vitovt21 и затем на кнопку \"Отправить сообщение\"";
const MESSAGE_WALLET : &str = "fsavipchat21";
#[derive(BotCommands)]
#[command(rename_rule = "lowercase", description = "Я протокольный дроид C-3PO, в настоящий момент я не уменю разговаривать, но мой создатель обещает что я скоро научусь поддерживать разговор.
Вот список команд, которые я сейчас понимаю:")]
enum Command {
#[command(description = "Отобразить этот текст")]
Help,
#[command(description = "Подписка на приватный канал")]
Start,
}
#[tokio::main]
async fn main() -> Result<(), Box<dyn Error>> {
pretty_env_logger::init();
log::info!("Starting FSA Subscriptions bot (version 0ρ0103)");
let bot = Bot::from_env();
let handler = dptree::entry()
.branch(Update::filter_message().endpoint(message_handler))
.branch(Update::filter_callback_query().endpoint(callback_handler))
.branch(Update::filter_inline_query().endpoint(inline_query_handler));
thread::spawn(move || pg_listen__expire_soon(&bot));
thread::spawn(move || pg_listen__expired());
thread::spawn(move || pg_listen__replenishment());
Dispatcher::builder(&bot, handler).enable_ctrlc_handler().build().dispatch().await;
Ok(())
}