Search code examples
pythontelebot

Administrator status in telebot


English is not my native I wrote bot for group chat. And had issue with giving new status to group member.

import telebot
from telebot import types
@bot.message_handler(commands = ['ban'])
def ban(message):

    print(bot.get_chat_member(chat_id=message.chat.id, user_id=message.from_user.id))
    bot.get_chat_member(chat_id=message.chat.id, user_id=message.from_user.id).status = 'administrator'

    bot.get_chat_member(chat_id=message.chat.id, user_id=message.from_user.id).can_edit_messages = True
    bot.get_chat_member(chat_id=message.chat.id, user_id=message.from_user.id).can_delete_messages = True
    bot.get_chat_member(chat_id=message.chat.id, user_id=message.from_user.id).can_restrict_members = True
    print(bot.get_chat_member(chat_id=message.chat.id, user_id=message.from_user.id))


There is method get_chat_member should change status of member from 'member' to 'administrator'. However I can't say why status doesn't change. Thanks for your attention. Waiting for any answer

pass pass pass pass


Solution

  • To change the status of user you have to use promote_chat_member like this:

    import telebot
    from telebot import types
    
    @bot.message_handler(commands=['ban'])
    def ban(message):
        user_id = message.from_user.id
        chat_id = message.chat.id
    
        bot.promote_chat_member(chat_id=chat_id, user_id=user_id,
                                can_edit_messages=True,
                                can_delete_messages=True,
                                can_restrict_members=True)
    
        member = bot.get_chat_member(chat_id=chat_id, user_id=user_id)
        print(member)