Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Telebot tg bot

Илья Шикулин Ученик (77), на голосовании 2 дня назад
@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, 'Команда выполняется только в ответе на сообщение данного пользователя которого вы хотите выгнать')

Помогите пожалуйста, что не так в коде? Когда даже я в ответ на сообщение команду пишу пишет ошибку что сообщение написано не в ответе
Голосование за лучший ответ
Евгений Чудаков Знаток (340) 1 месяц назад
В вашем коде есть несколько моментов, которые могут вызывать проблему с определением, что команда выполняется в ответ на сообщение. Вот основные моменты, которые стоит проверить:

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, 'Команда выполняется только в ответе на сообщение данного пользователя, которого вы хотите выгнать')

Попробуйте выполнить изменения и посмотрите, устранит ли это проблему. Если ошибка всё равно сохраняется, проверьте, правильно ли вы используете библиотеку для работы с вашим ботом и соответствуют ли её версии документации.
Илья ШикулинУченик (77) 1 месяц назад
Нет не помогает бот будто не видит сообщения эти для него что с ответом что без одно и тоже
Евгений Чудаков Знаток (340) @bot.message_handler(commands=['kick']) def kickg(message): if message.reply_to_message: id_admin = message.reply_to_message.from_ user.id # Исправлено: 'from_user' вместо 'from_ user' id_chat = message.chat.id message_id = message.reply_to_message.message_id if id_admin != 1499040181: # Убедитесь, что id_admin сравнивается с числом, а не строкой 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, 'Команда выполняется только в ответе на сообщение данного пользователя, которого вы хотите выгнать')
Евгений ЧудаковЗнаток (340) 1 месяц назад
Возможно так заработает
Похожие вопросы