Создание рассылки на Aiogram
Помогите пожалуйста, как в AIOGRAM реализовать код для рассылки в телеграм КАНАЛЫ.... Как вообще разослать сообщения в каналы
Есть код реализации рассылки и добавления через txt
import logging
from aiogram import Bot, Dispatcher, executor, types
bot = Bot(token="5962756451:AAGRV5a36MiIok4fRuxZu0r1kf-gyWPReCk")
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 шт):
Автор решения: ZxNuClear
→ Ссылка
Самый просто способ получить 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 он напишет в канал "Всем привет!"