Как в Python реализовать выполнение команды для Telegram-бота с заданной вероятностью?

Я разрабатываю бота с использованием Aiogram в Python и хочу реализовать его ответ на определенное ключевое слово с заданной вероятностью, например 50%. Можете помочь мне с написанием такого кода? Я новичок в этой области.
  • 14 декабря 2024 г. 18:03
Ответы на вопрос 3
Конечно! Вы можете использовать библиотеку `random` в Python, чтобы генерировать случайные числа, а затем определять, с какой вероятностью возвращать ответ вашего бота. Вот пример, как это можно сделать с использованием `aiogram` для реализации бота:

```python
import random
from aiogram import Bot, Dispatcher, types
from aiogram.utils import executor

API_TOKEN = 'YOUR_API_TOKEN'

# Инициализация бота и диспетчера
bot = Bot(token=API_TOKEN)
dp = Dispatcher(bot)

@dp.message_handler(commands=['start'])
async def send_welcome(message: types.Message):
    await message.reply("Привет! Напиши что-нибудь, и я отвечу с вероятностью 50%!")

@dp.message_handler(lambda message: True)  # Обрабатываем любое сообщение
async def echo(message: types.Message):
    # Проверяем, содержится ли в сообщении ключевое слово
    keyword = "проверка"  # Замените на ваше ключевое слово
    if keyword in message.text.lower():  # Приводим текст к нижнему регистру для удобства
        # Генерируем случайное число от 1 до 100
        probability = random.randint(1, 100)
        if probability <= 50:  # 50% вероятность
            await message.reply("Вы ответили на ключевое слово!")
        else:
            await message.reply("Я не ответил на это сообщение.")
    else:
        await message.reply("Запрос не содержит ключевого слова.")

if __name__ == '__main__':
    executor.start_polling(dp, skip_updates=True)
```

### Разбор кода:

1. **Импортируем библиотеки**: Импортируем необходимые модули из `aiogram` и `random`.

2. **Инициализация бота**: Замените `YOUR_API_TOKEN` на токен вашего Telegram-бота.

3. **Создаём обработчик команд**: Обработчик команды `/start` отправляет приветственное сообщение.

4. **Обработчик сообщений**: 
   - Используем `@dp.message_handler(lambda message: True)`, чтобы реагировать на любое сообщение.
   - Проверяем, содержится ли ключевое слово (в нашем примере - "проверка") в сообщении.
   - Если ключевое слово найдено, генерируем случайное число от 1 до 100.
   - Если число меньше или равно 50, отправляем ответ.

5. **Запуск бота**: Используем `executor.start_polling(dp, skip_updates=True)` для запуска бота.

Теперь, когда кто-то напишет сообщение, и в нем будет указано ключевое слово "проверка", бот ответит с вероятностью 50%. Если ключевого слова нет, бот просто сообщит, что запрос не содержит ключевого слова.
import random

random_value = random.random()
if random_value >= 0.5:
    # посылает ответ
else:
    pass
Я новичок в этом деле.

Goto язык учить, а не ботов писать. Рано это для вас ещё
Похожие вопросы