January 15, 2024

Инструкция по установке и использованию My Siski Tyan.

Регистрируемся на сайте pythonanywhere.com

Заходим в Files

Чтобы отобразилось меню Files нажимаем на три полоски в верхнем правом углу.

Создаём файл в Files, как на примере «bot.py».

Название можно указать любое, в данном примере bot.

.py(пай) в файлах обязательно, иначе сайт не распознает проект.

Кидаем в проект код предоставленный ниже:

import telebot 
import telebot 
import random
import sqlite3
from datetime import datetime, timedelta
TOKEN = 'ваш токен'
bot = telebot.TeleBot(TOKEN)
# Функция для создания подключения и курсора к базе данных
def get_database_connection():
    conn = sqlite3.connect('bot_database.db')
        cursor = conn.cursor()
            return conn, cursor
            # Создание таблицы, если её нет
            conn, cursor = get_database_connection()
            cursor.execute('''
                CREATE TABLE IF NOT EXISTS users (
                        user_id INTEGER PRIMARY KEY,
                                username TEXT,
                                        chest_size REAL,
                                                last_used TEXT
                                                    )
                                                    ''')
                                                    conn.commit()
                                                    # Функция для отправки сообщения с приглашением подписаться на канал
                                                    def send_subscribe_message(chat_id):
                                                        bot.send_message(chat_id, "Подпишись на нас: @psycho_pasport")
                                                        # Команда /start
                                                        @bot.message_handler(commands=['start', 'help'])
                                                        def send_welcome(message):
                                                            bot.reply_to(message, "Привет! Я бот для измерения размера груди. Используй команды /breast, /top_breast и /bot_users.")
                                        @bot.message_handler(commands=['breast'])
                                        def measure_chest_size(message):
                                            user_id = message.from_user.id
                                                conn, cursor = get_database_connection()
                                                    # Проверка времени последнего использования команды
                                                        last_used_time = cursor.execute('SELECT last_used FROM users WHERE user_id=?', (user_id,)).fetchone()
                                                            if last_used_time and datetime.strptime(last_used_time[0], '%Y-%m-%d %H:%M:%S') + timedelta(hours=12) > datetime.now():
                                                                    # Если команда использована в течение 12 часов, отправляем сообщение с извинением
                                                                            html_link = f'<a href="tg://user?id={user_id}">{message.from_user.first_name}</a>'
                                                                                    response_message = f'{html_link}, извини, но ты можешь использовать эту команду только раз в 12 часов.'
                                                                                        else:
                                                                                                # Инициализация переменной chest_increase перед использованием
                                                                                                        chest_increase = 0
                                                                                                                # Генерация случайного размера груди
                                                                                                                        current_chest_size = cursor.execute('SELECT chest_size FROM users WHERE user_id=?', (user_id,)).fetchone()
                                                                                                                                if current_chest_size:
                                                                                                                                            current_chest_size = current_chest_size[0]
                                                                                                                                                        chest_increase = round(random.uniform(0.1, 1), 2)
                                                                                                                                                                    new_chest_size = round(current_chest_size + chest_increase, 2)
                                                                                                                                                                            else:
                                                                                                                                                                                        new_chest_size = round(random.uniform(-0.8, 1), 2)
                                                                                                                                                                                               # Сохранение в базе данных
                                                                                                                                                                                                       now = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
                                                                                                                                                                                                               cursor.execute('INSERT OR REPLACE INTO users (user_id, username, chest_size, last_used) VALUES (?, ?, ?, ?)',
                                                                                                                                                                                                                                      (user_id, message.from_user.username or message.from_user.first_name, new_chest_size, now))
                                                                                                                                                                                                                                              conn.commit()
                                                                                                                                                                                                                                              
                                                                                                                                                                                                                                                              # Формирование ответного сообщения с увеличенным размером груди и предложением подписаться на канал
                                                                                                                                                                                                                                                                      html_link = f'<a href="tg://user?id={user_id}">{message.from_user.first_name}</a>'
                                                                                                                                                                                                                                                                              if chest_increase != 0:
                                                                                                                                                                                                                                                                                          response_message = f'{html_link}, твой размер груди увеличился на {chest_increase}. ' \
                                                                                                                                                                                                                                                                                                                         f'Теперь он равен: {new_chest_size}. \nНаш канал: @psycho_pasport'
                                                                                                                                                                                                                                                                                                                                 else:
                                                                                                                                                                                                                                                                                                                                             response_message = f'{html_link}, твой размер груди увеличился на {chest_increase}. ' \
                                                                                                                                                                                                                                                                                                                                                                            f'Теперь он равен: {new_chest_size}. \nНаш канал: @psycho_pasport'
                                                                                                                                                                                                                                                                                                                                                                            
                                                                                                                                                                                                                                                                                                                                                                                    bot.send_message(message.chat.id, response_message, parse_mode='HTML')
                                                                                                                                                                                                                                                                                                                                                                                    
                                                                                                                                                                                                                                                                                                                                                                                    # Команда /top_breast
                                                                                                                                                                                                                                                                                                                                                                                    @bot.message_handler(commands=['top_breast'])def show_top_chests(message):
                                                                                                                                                                                                                                                                                                                                                                                        conn, cursor = get_database_connection()
                                                                                                                                                                                                                                                                                                                                                                                        
                                                                                                                                                                                                                                                                                                                                                                                                # Получение топа пользователей с самым большим размером груди
                                                                                                                                                                                                                                                                                                                                                                                                    top_users = cursor.execute('SELECT username, chest_size FROM users ORDER BY chest_size DESC LIMIT 10').fetchall()
                                                                                                                                                                                                                                                                                                                                                                                                    
                                                                                                                                                                                                                                                                                                                                                                                                            if top_users:
                                                                                                                                                                                                                                                                                                                                                                                                                    # Формирование сообщения с топом пользователей
                                                                                                                                                                                                                                                                                                                                                                                                                            top_message = "Топ пользователей: \n \n"
                                                                                                                                                                                                                                                                                                                                                                                                                                    for rank, (username, chest_size) in enumerate(top_users, start=1):
                                                                                                                                                                                                                                                                                                                                                                                                                                                top_message += f"{rank} | {username}: {chest_size}\n"
                                                                                                                                                                                                                                                                                                                                                                                                                                                    else:
                                                                                                                                                                                                                                                                                                                                                                                                                                                            # Сообщение, если никто еще не измерял размер груди
                                                                                                                                                                                                                                                                                                                                                                                                                                                                    top_message = "Никто еще не измерял размер груди. Будь первым!"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                        # Ответное сообщение с топом и предложением подписаться на канал
                                                                                                                                                                                                                                                                                                                                                                                                                                                                            bot.reply_to(message, f"{top_message}\nНаш канал: @psycho_pasport")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                            
                                                                                                                                                                                                                                                                                                                                                                                                                                                                            # Команда /users
                                                                                                                                                                                                                                                                                                                                                                                                                                                                            @bot.message_handler(commands=['bot_users'])
                                                                                                                                                                                                                                                                                                                                                                                                                                                                            def show_users_count(message):
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                conn, cursor = get_database_connection()
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        # Получение количества пользователей
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            users_count = cursor.execute('SELECT COUNT(*) FROM users').fetchone()[0]
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                # Ответное сообщение с количеством пользователей и предложением подписаться на канал
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    bot.reply_to(message, f"Всего пользователей: {users_count}\nНаш канал: @psycho_pasport")
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    # Запуск бота
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    if name == 'main':
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    bot.polling()

Заходим в Bash и устанавливаем зависимости и нажимает «Run» в файле, где наш код.