Complete and customizable mapping of Telegram slot machine (🎰) dice values (1-64) to symbol combinations
Project description
telegram-slot-map
Полная и настраиваемая расшифровка всех 64 исходов слота 🎰 в Telegram.
Когда бот отправляет dice с эмодзи 🎰, сервер возвращает dice.value — число от 1 до 64.
Эта библиотека даёт точное соответствие каждой комбинации символов и позволяет заменить их на свои эмодзи, стикеры или текст.
📦 Установка
pip install telegram-slot-map
🎯 Зачем это нужно?
Когда вы создаете Telegram бота с игровым функционалом (казино, слоты), вам нужно:
- Понимать результат — что выпало на слоте по числу от 1 до 64
- Кастомизировать внешний вид — заменить стандартные символы на свои
- Реализовать игровую логику — проверять выигрышные комбинации
Эта библиотека решает все три задачи!
🚀 Быстрый старт
Что вы получаете от Telegram?
Когда бот отправляет dice с эмодзи 🎰:
# Пример с aiogram
from aiogram import Bot, types
bot = Bot(token="YOUR_TOKEN")
# Отправляем слот
message = await bot.send_dice(chat_id=chat_id, emoji="🎰")
# Telegram возвращает число от 1 до 64
dice_value = message.dice.value # Например: 22
Что делает библиотека?
Преобразует это число в понятную комбинацию символов:
from slotmap import get_slot_combination
result = get_slot_combination(22)
print(result)
# Вывод: "cherry cherry cherry"
📖 Примеры использования
1. Базовый пример — получить комбинацию
from slotmap import get_slot_combination
# Получаем комбинацию по значению dice
result = get_slot_combination(1)
print(result) # "bar bar bar"
result = get_slot_combination(43)
print(result) # "lemon lemon lemon"
result = get_slot_combination(64)
print(result) # "seven seven seven"
Что получаете: строку с названиями символов через пробел.
2. Кастомизация — свои эмодзи и символы
Самая мощная функция! Замените стандартные названия на любые эмодзи, текст или даже ID стикеров.
from slotmap import get_slot_combination
# Создаем свой маппинг
MY_SYMBOLS = {
'bar': '➖',
'cherry': '🍒',
'lemon': '🍋',
'seven': '7️⃣'
}
# Передаем в функцию
print(get_slot_combination(1, symbols=MY_SYMBOLS))
# Вывод: "➖ ➖ ➖"
print(get_slot_combination(22, symbols=MY_SYMBOLS))
# Вывод: "🍒 🍒 🍒"
print(get_slot_combination(64, symbols=MY_SYMBOLS))
# Вывод: "7️⃣ 7️⃣ 7️⃣"
Ключи для замены: 'bar', 'cherry', 'lemon', 'seven'
3. Использование в боте — полный пример
from aiogram import Bot, Dispatcher, types
from aiogram.filters import Command
from slotmap import get_slot_combination
bot = Bot(token="YOUR_TOKEN")
dp = Dispatcher()
# Ваши кастомные символы
CASINO_SYMBOLS = {
'bar': '💎',
'cherry': '🍒',
'lemon': '🍋',
'seven': '🔥'
}
@dp.message(Command("spin"))
async def spin_slot(message: types.Message):
# Отправляем слот
slot_message = await message.answer_dice(emoji="🎰")
# Ждем результат (Telegram присылает его через ~3 секунды)
await asyncio.sleep(3)
# Получаем значение
dice_value = slot_message.dice.value
# Преобразуем в красивую строку
result = get_slot_combination(dice_value, symbols=CASINO_SYMBOLS)
# Отправляем пользователю
await message.answer(f"Результат: {result}")
if __name__ == "__main__":
dp.run_polling(bot)
Что получает пользователь:
/spin
🎰 [анимация слота]
Результат: 🍒 🍒 🍒
4. Игровая логика — проверка выигрышей
Для реализации казино нужно проверять комбинации. Используйте RAW_SLOT_COMBINATIONS:
from slotmap import RAW_SLOT_COMBINATIONS
dice_value = 22 # Значение от Telegram
# Получаем список символов
combo = RAW_SLOT_COMBINATIONS[str(dice_value)]
print(combo) # ['cherry', 'cherry', 'cherry']
# Проверяем выигрыш
if combo[0] == combo[1] == combo[2]:
print("ДЖЕКПОТ! Все три символа совпали!")
win_amount = 1000
elif combo[0] == combo[1]:
print("Малый выигрыш! Первые два совпали.")
win_amount = 100
else:
print("Не повезло. Попробуй еще раз!")
win_amount = 0
5. Продвинутый пример — система выплат
from slotmap import RAW_SLOT_COMBINATIONS
# Таблица выплат
PAYOUTS = {
'seven': 100, # Семерка — самая ценная
'cherry': 50,
'lemon': 30,
'bar': 10
}
def calculate_win(dice_value: int, bet: int) -> int:
"""Рассчитывает выигрыш на основе комбинации"""
combo = RAW_SLOT_COMBINATIONS[str(dice_value)]
# Все три символа совпали
if combo[0] == combo[1] == combo[2]:
symbol = combo[0]
multiplier = PAYOUTS[symbol]
return bet * multiplier
# Первые два совпали
elif combo[0] == combo[1]:
symbol = combo[0]
multiplier = PAYOUTS[symbol] // 5
return bet * multiplier
# Проигрыш
return 0
# Примеры
print(calculate_win(64, bet=10)) # seven-seven-seven: 10 * 100 = 1000
print(calculate_win(22, bet=10)) # cherry-cherry-cherry: 10 * 50 = 500
print(calculate_win(11, bet=10)) # lemon-lemon-bar: 10 * 6 = 60
print(calculate_win(2, bet=10)) # cherry-bar-bar: 0
6. Использование с другими библиотеками
python-telegram-bot
from telegram import Update
from telegram.ext import Application, CommandHandler, ContextTypes
from slotmap import get_slot_combination
SYMBOLS = {'bar': '💎', 'cherry': '🍒', 'lemon': '🍋', 'seven': '🔥'}
async def spin(update: Update, context: ContextTypes.DEFAULT_TYPE):
# Отправляем слот
msg = await update.message.reply_dice(emoji="🎰")
# Ждем результат
await asyncio.sleep(3)
# Получаем и форматируем
result = get_slot_combination(msg.dice.value, symbols=SYMBOLS)
await update.message.reply_text(f"Выпало: {result}")
app = Application.builder().token("YOUR_TOKEN").build()
app.add_handler(CommandHandler("spin", spin))
app.run_polling()
Telethon
from telethon import TelegramClient, events
from slotmap import get_slot_combination
client = TelegramClient('session', api_id, api_hash)
@client.on(events.NewMessage(pattern='/spin'))
async def handler(event):
msg = await client.send_file(event.chat_id, file=types.InputMediaDice(emoticon='🎰'))
await asyncio.sleep(3)
result = get_slot_combination(msg.media.value)
await event.respond(f"Результат: {result}")
client.start()
client.run_until_disconnected()
📚 API Reference
get_slot_combination(value, symbols=None)
Преобразует значение dice в строку с символами.
Параметры:
value(int): Число от 1 до 64 (значениеdice.valueот Telegram)symbols(dict, optional): Словарь замены символов. Ключи:'bar','cherry','lemon','seven'
Возвращает:
str: Строка из трех символов, разделенных пробелами
Исключения:
ValueError: Если value не в диапазоне 1-64
Примеры:
get_slot_combination(1) # "bar bar bar"
get_slot_combination(22, {'cherry': '🍒'}) # "🍒 🍒 🍒"
RAW_SLOT_COMBINATIONS
Словарь всех 64 комбинаций в виде списков.
Тип: dict[str, list[str]]
Структура:
{
'1': ['bar', 'bar', 'bar'],
'2': ['cherry', 'bar', 'bar'],
...
'64': ['seven', 'seven', 'seven']
}
Использование:
from slotmap import RAW_SLOT_COMBINATIONS
combo = RAW_SLOT_COMBINATIONS['22'] # ['cherry', 'cherry', 'cherry']
DEFAULT_SYMBOLS
Стандартные символы, используемые по умолчанию.
Тип: dict[str, str]
Значение:
{
'bar': 'bar',
'cherry': '🍒',
'lemon': '🍋',
'seven': '7️⃣'
}
🎲 Справочник всех комбинаций
Всего в Telegram slot machine 4 типа символов:
| Ключ | Описание | Стандартный вид |
|---|---|---|
bar |
Надпись BAR | bar |
cherry |
Вишня/Виноград | 🍒 |
lemon |
Лимон | 🍋 |
seven |
Семерка | 7️⃣ |
Примеры значений:
| dice.value | Комбинация |
|---|---|
| 1 | bar bar bar |
| 22 | cherry cherry cherry |
| 43 | lemon lemon lemon |
| 64 | seven seven seven |
| 11 | lemon lemon bar |
| 32 | seven seven cherry |
Полный список всех 64 комбинаций доступен в RAW_SLOT_COMBINATIONS.
💡 Частые вопросы
Как получить dice.value?
# aiogram
message = await bot.send_dice(chat_id, emoji="🎰")
value = message.dice.value
# python-telegram-bot
message = await update.message.reply_dice(emoji="🎰")
value = message.dice.value
Можно ли использовать ID стикеров вместо эмодзи?
Да! Передайте ID стикеров в словаре:
STICKERS = {
'bar': 'CAACAgIAAxkBAAEM...',
'cherry': 'CAACAgIAAxkBAAEN...',
'lemon': 'CAACAgIAAxkBAAEO...',
'seven': 'CAACAgIAAxkBAAEP...'
}
result = get_slot_combination(22, symbols=STICKERS)
# Вернет строку с ID стикеров
Как проверить, что выпал джекпот?
combo = RAW_SLOT_COMBINATIONS[str(dice_value)]
is_jackpot = combo[0] == combo[1] == combo[2]
Почему ключи в RAW_SLOT_COMBINATIONS — строки?
Для удобства работы с JSON и совместимости. Используйте str(dice_value) при обращении к словарю.
🤝 Вклад в проект
Нашли баг или хотите добавить функцию? Создайте issue или pull request на GitHub!
📄 Лицензия
MIT License — используйте свободно в своих проектах.
🔗 Полезные ссылки
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file telegram_slot_map-1.0.2.tar.gz.
File metadata
- Download URL: telegram_slot_map-1.0.2.tar.gz
- Upload date:
- Size: 7.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1e23c046bac47bd0d960c46128b3188f7a8116d9100db8a70bbd3a80d39221d4
|
|
| MD5 |
bfa4213a82ffd86fd0aa3f43d8639ede
|
|
| BLAKE2b-256 |
155ae06eef6d021a07d0a00a8a2816baca023316ce54111359b0f9d4601c07c3
|
File details
Details for the file telegram_slot_map-1.0.2-py3-none-any.whl.
File metadata
- Download URL: telegram_slot_map-1.0.2-py3-none-any.whl
- Upload date:
- Size: 7.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
65ad09c008193d77771b2cfe7230f3fa29386ad254279c0cb9071f4281eb1b8f
|
|
| MD5 |
66c05228f11218aef79d00789419784c
|
|
| BLAKE2b-256 |
038f7e1212944d15cc2a5f6c5013545d7d9eed89f1dba4bf2bca88fa26c4d67e
|