Создание рассылки на Aiogram

Рейтинг: 1Ответов: 1Опубликовано: 06.06.2023

Помогите пожалуйста, как в AIOGRAM реализовать код для рассылки в телеграм КАНАЛЫ.... Как вообще разослать сообщения в каналы

Есть код реализации рассылки и добавления через txt

import logging
from aiogram import Bot, Dispatcher, executor, types

bot = Bot(token=)
dp = Dispatcher(bot)
logging.basicConfig(level=logging.INFO)

@dp.message_handler(commands="start")
async def asd(message):
    f = open('usr.txt', 'a')
    f.write(str(message.chat.id) + '\n')
    f.close()
    await message.reply("Привет, я бот")

@dp.message_handler(commands=['rassilka'])
async def rassilka(message):
    joinedFile = open("usr.txt", "r")
    jionedUsers = set()
    for line in joinedFile:
        jionedUsers.add(line.strip())
    joinedFile.close()
    for user in jionedUsers:
        await bot.send_message(user, text= 'Текст рассылки')

if __name__ == "__main__":
    print("Бот запущен")
    executor.start_polling(dp, skip_updates=True)

Ответы

▲ 1Принят

Самый просто способ получить id канала достаточно в браузере перейти по адресу:

https://api.telegram.org/bot<BOT TOKEN>/sendMessage?chat_id=@<НАЗВАНИЕ КАНАЛА>&text=123
  • канал должен быть публичным, бот должен быть в него добавлен
  • <BOT TOKEN> - это собственно токен бота, т.к. вы его засветили, то в вашем случае он 5962756451:AAGRV5a36MiIok4fRuxZu0r1kf-gyWPReCk
  • <НАЗВАНИЕ КАНАЛА> - можно получить зайдя в информацию о канале, там будет ссылка на канал типа t.me/НАЗВАНИЕ КАНАЛА

в ответ получаете JSON:

{
  "ok": true,
  "result": {
    "message_id": 2,
    "sender_chat": {
      "id": -1001701332240, <- Это и есть ID канала
      "title": "***",
      "username": "***",
      "type": "channel"
    },
    "chat": {
      "id": -1001701332240,
      "title": "***",
      "username": "***",
      "type": "channel"
    },
    "date": 1686066697,
    "text": "123"
  }
}

если каналов много и лень вручную их перебирать, то делайте самый простецкий парсер и собирайте ID всех своих каналов в файл.

Как писал вам выше, для того, чтобы отправить сообщение ботом в канал используйте обычные методы отправки сообщений, например так:

@dp.message_handler(commands=['start'])
async def command_start(message: types.Message):
    await bot.send_message('-1001701332240', 'Всем привет!')

при отправке боту команды /start он напишет в канал "Всем привет!"