Почему интерпретатор не видит функцию?
Пытаюсь сделать хендлер для бана пользователей, которые пишут определенные слова.
Проблема в том, что при использовании рекомендуемой функции:
await bot.kick_chat_member(chat_id, user_id)
почему в коде навожусь на kick_chat_member и мне выдает такое
(Cannot find reference 'kick_chat_member' in 'bot.py')
Вот код:
import asyncio
import logging
import sys
from aiogram.client import bot
from wordBase import ban_words
from os import getenv
from routertry import route
from aiogram.contrib.fsm_storage.memory import MemoryStorage
from aiogram import Bot, Dispatcher, Router, types
from aiogram.enums import ParseMode
from aiogram.filters import CommandStart
from aiogram.types import Message
from aiogram.utils.markdown import hbold
TOKEN = "*"
dp = Dispatcher()
dp.include_router(route.router)
@dp.message(CommandStart())
async def command_start_handler(message: Message) -> None:
await message.answer(f"Hello, {hbold(message.from_user.full_name)}!")
# ПРОБЛЕМА ТУТ !!!
@dp.message_handler(content_types=types.ContentType.TEXT)
async def handle_message(message: types.Message):
# Проверяем, содержит ли сообщение запрещенные слова
banned_words = ["слово1", "слово2", "слово3"] # Список запрещенных слов
if any(word in message.text.lower() for word in banned_words):
# Получаем информацию о чате
chat_id = message.chat.id
user_id = message.from_user.id
# Забанить пользователя
await bot.kick_chat_member(chat_id, user_id)
async def main() -> None:
bot = Bot(TOKEN, parse_mode=ParseMode.HTML)
await bot.delete_webhook(drop_pending_updates=True)
await dp.start_polling(bot)
if __name__ == "__main__":
logging.basicConfig(level=logging.INFO, stream=sys.stdout)
asyncio.run(main())
Версии: aiogram 3.2.0 python 3.11.6
Ответы (2 шт):
Автор решения: virsi
→ Ссылка
Попробуйте так:
await update.chat_member.chat.ban_member(chat_id, user_id)
Дело в том, что этот метод не используется в библиотеке версии 20+
Удалены устаревшие методыick_chat_member,ickChatMember, get_chat_members_count и getChatMembersCount.
Автор решения: knodr
→ Ссылка
используйте доступ к bot из объекта message
await message.bot.ban_chat_member(chat_id, user_id)