我正在尝试创建一个处理程序来禁止写入某些单词的用户。问题是,当使用推荐的功能时:
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
尝试这个:
事实是这个方法在20+版本的库中没有使用
使用从消息对象访问机器人
await message.bot.ban_chat_member(chat_id, user_id)