January 15, 2024
Инструкция по установке и использованию My Siski Tyan.
Регистрируемся на сайте pythonanywhere.com
Создаём файл в Files, как на примере «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» в файле, где наш код.