Бот не обрабатывает сообщения в групповых чатах

Код:

import telebot
import os
import random
import json
import datetime

bot = telebot.TeleBot('тут токен, но палить не буду')

user_data_file = 'user_data.json'

def load_user_data():
    try:
        with open(user_data_file, 'r') as f:
            return json.load(f)
    except FileNotFoundError:
        return {}

def save_user_data(user_data):
    with open(user_data_file, 'w') as f:
        for user_id, data in user_data.items():
            if 'last_bonus' in data:
                if data['last_bonus'] is not None:
                    data['last_bonus'] = data['last_bonus'].isoformat()
        json.dump(user_data, f)

user_data = load_user_data()

def handle_group_command(message):
    if message.text == '/start':
        bot.send_message(message.chat.id, f"Привет! Я бот для нашей беседы. ?")
    elif message.text == '/help':
        bot.send_message(message.chat.id, "Я могу отвечать на сообщения и выполнять некоторые команды. Попробуйте написать что-нибудь!")
    else:
        bot.send_message(message.chat.id, f"Извини, я не могу обрабатывать эту команду в группе.")


@bot.message_handler(content_types=['text'], chat_types=['group', 'supergroup'])
def handle_group_message(message):
    if message.text.startswith('/'):
        handle_group_command(message)
    else:
        bot.send_message(message.chat.id, f"Извини, я не могу обрабатывать сообщения в группе.")

@bot.message_handler(content_types=['text'], chat_types=['private'])
def handle_message(message):
    if message.text == '/start':
        if message.from_user.id not in user_data:
            user_data[message.from_user.id] = {'balance': 0, 'last_bonus': None}
            save_user_data(user_data)
        bot.send_message(message.chat.id, f"Привет! Я бот для нашей беседы. ? У вас на счету {user_data[message.from_user.id]['balance']} монет.")
    elif message.text == '/help':
        bot.send_message(message.chat.id, "Я могу отвечать на сообщения и выполнять некоторые команды. Попробуйте написать что-нибудь!")
    elif message.text == '/balance':
        bot.send_message(message.chat.id, f"Ваш баланс: {user_data[message.from_user.id]['balance']} монет.")
    elif message.text == '/bonus':
        if give_bonus(message.from_user.id):
            bot.send_message(message.chat.id, "Поздравляем! Вы получили бонус в размере 100 монет.")
        else:
            bot.send_message(message.chat.id, "Вы уже получали бонус сегодня. Попробуйте снова завтра.")

def give_bonus(user_id):
    now = datetime.datetime.now()
    if user_id in user_data:
        if user_data[user_id]['last_bonus'] is None or (now - datetime.datetime.fromisoformat(user_data[user_id]['last_bonus'])).total_seconds() >= 86400:
            user_data[user_id]['balance'] += 100
            user_data[user_id]['last_bonus'] = now
            save_user_data(user_data)
            return True
    return False

bot.polling(none_stop=True)

Бот не обрабатывает сообщения в групповых чатах, помогите пофиксить (Доп: Выводит после каждого сообщения "Извини, я не могу обрабатывать эту команду в группе.")


Ответы (1 шт):

Автор решения: Kavermoki

Завернуть в обработчик:

@bot.message_handler(commands=['start', 'help'])
def handle_group_command(message):
    if message.text == '/start':
        bot.send_message(message.chat.id, f"Привет! Я бот для нашей беседы. ?")
    elif message.text == '/help':
        bot.send_message(message.chat.id, "Я могу отвечать на сообщения и выполнять некоторые команды. Попробуйте написать что-нибудь!")

а "иначе" можно и не добавлять, никто же другие команды и не знает и их по сути нет, нечего обрабатывать.

→ Ссылка