Как сделать разное приветствие в разных группах aiogram?
Задача такова. Я пытаюсь сделать приветствие новых участников группы разных чатов по разному. Но не пойму по какой причине не срабатывает условие... Сразу срабатывает елс.
@dp.message_handler(content_types=['new_chat_members'])
async def handler_new_member(message: types.Message):
if message.chat.id == 'id_такой_то':
await bot.send_message(message.chat.id,f"Привет {message.new_chat_members[0].first_name}. Как дела?")
await bot.send_message(message.chat.id, "Используйте команду /start")
else:
await bot.send_message(message.chat.id, f"{message.new_chat_members[0].first_name} Категорически приветствую")
Попутно еще хочу спросить почему не срабатывает эта конструкция. Чтобы удалять новых и тех кто ушел из группы? Причом чтобы удаляло любые сообщение не только типа "Тарас теперь в группе, "Тарас вышел из группы", но есть еще другие сообщения типа "Вступил по ссылке приглашению" и т.д.
@dp.message_handler(content_types=['new_chat_members', 'left_chat_member'])
async def on_user_joined(message: types.Message):
await message.delete()
И вообщем как можно обьеденить эти два хендлера в одном?
Ответы (2 шт):
Тип message.chat.id является int и он никак не может быть равен строке
Замените условие на такое
if message.chat.id == some_int_id:
По поводу второго вопроса
await bot.delete_message(message.chat.id, message.message_id)
Просто добавляет id и текста в словарь. И уже сказали id должен быть int
chats = {
id1: [("Привет {name}. Как дела?"),
"Hello!"],
id2: [("{name} Категорически приветствую"),
"Ну здравствуй!"]
}
@dp.message_handler(content_types=['new_chat_members'])
async def handler_new_member(message: types.Message):
if message.chat.id in chats:
await message.answer(f"{random.choice(chats.get(message.chat.id))}".format(name=message.from_user.first_name))
else:
await message.answer(f"Просто привет!:)")
await message.answer("Используйте команду /start")