В вашем коде есть несколько моментов, которые могут вызывать проблему с определением, что команда выполняется в ответ на сообщение. Вот основные моменты, которые стоит проверить:
1. Проверка идентификаторов: Убедитесь, что вы правильно сравниваете идентификатор пользователя. В id_admin вы получаете значение как message.reply_to_message.from_
user.id , но в условии проверки вы сравниваете его с 1499040181 как строку. Попробуйте сравнить идентификаторы как числа:
if id_admin != 1499040181:
2. Проверка на наличие сообщения: Убедитесь, что ваш бот действительно получает reply_to_message. Возможно, нужно добавить отладочный вывод, чтобы увидеть, действительно ли это значение присутствует. Например:
print(message.reply_to_message)
3. Структура кода: Проверьте, правильно ли у вас работает основной бот и обработчик команд. Например, убедитесь, что функция kickg регистрируется как обработчик правильно, и что бот не игнорирует команды.
4. Дополнительная проверка: Если всё еще возникает ошибка, добавьте обработчик для любых исключений, чтобы понять, что именно происходит:
try:
# ваш код
except Exception as e:
print(f"Ошибка: {e}")
Вот обновленный код с учетом указанных изменений:
@bot.message_handler(commands=['kick'])
def kickg(message):
if message.reply_to_message:
id_admin = message.reply_to_message.from_
user.id id_chat = message.chat.id
message_id = message.reply_to_message.message_id
if id_admin != 1499040181: # Сравнение как число
bot.kick_chat_member(id_chat, id_admin)
bot.send_message(message.chat.id, 'Пользователь успешно удален')
else:
bot.send_message(message.chat.id, 'Админа или создателя выгнать нельзя')
else:
bot.send_message(message.chat.id, 'Команда выполняется только в ответе на сообщение данного пользователя, которого вы хотите выгнать')
Попробуйте выполнить изменения и посмотрите, устранит ли это проблему. Если ошибка всё равно сохраняется, проверьте, правильно ли вы используете библиотеку для работы с вашим ботом и соответствуют ли её версии документации.
def kickg(message):
if message.reply_to_message:
id_admin = message.reply_to_message.from_ user.id
id_chat = message.chat.id
message_id = message.reply_to_message.message_id
if id_admin != '1499040181':
bot.kick_chat_member(id_chat, id_admin)
bot.send_message(message.chat.id, 'Пользователь успешно удален')
else:
bot.send_message(message.chat.id, 'Админа или создателя выгнать нельзя')
else:
bot.send_message(message.chat.id, 'Команда выполняется только в ответе на сообщение данного пользователя которого вы хотите выгнать')
Помогите пожалуйста, что не так в коде? Когда даже я в ответ на сообщение команду пишу пишет ошибку что сообщение написано не в ответе