Можете ли вы изменить этот скрипт таким образом, чтобы сообщение могло быть отправлено всем пользователям, а не только определенному id?

Как изменить данный скрипт, чтобы я мог отправить сообщение всем пользователям сразу, без необходимости указывать их id каждый раз?
  • 1 октября 2023 г. 7:37
Ответы на вопрос 1
Да, конечно, я могу помочь вам с этим. Но, для того чтобы отправить сообщение всем пользователям, вам нужно иметь список всех ID пользователей.

Вот пример скрипта, который отправит сообщение всем пользователям сразу без необходимости указывать их ID каждый раз:

```python
import requests

def send_message_to_all_users(text):
    token = "YOUR_BOT_TOKEN"
    response = requests.get(f"https://api.telegram.org/bot{token}/getUpdates")
    data = response.json()

    if "result" in data:
        users = set()
        for update in data["result"]:
            if "message" in update:
                chat_id = update["message"]["chat"]["id"]
                users.add(chat_id)

        for user_id in users:
            send_message(user_id, text)
    else:
        print("Error: Failed to retrieve user data.")

def send_message(chat_id, text):
    token = "YOUR_BOT_TOKEN"
    url = f"https://api.telegram.org/bot{token}/sendMessage"
    payload = {"chat_id": chat_id, "text": text}
    response = requests.post(url, json=payload)

    if response.status_code != 200:
        print(f"Failed to send message. Response code: {response.status_code}")

# Пример использования
send_message_to_all_users("Привет, всем! Это сообщение отправлено всем пользователям.")
```

В данном скрипте мы получаем список всех обновлений сообщений бота с помощью метода `getUpdates`. Затем мы извлекаем `chat_id` каждого пользователя из списка обновлений и добавляем его во множество `users` (чтобы избежать повторений). После этого мы отправляем сообщение каждому пользователю из списка `users` с помощью метода `send_message`.

Обратите внимание, что вам нужно заменить `'YOUR_BOT_TOKEN'` на токен вашего бота.
Похожие вопросы