Ответы пользователя по тегу Боты
  • Цепочка сообщений в Vkbottle PYTHON - как сделать?

    igor_89squad
    @igor_89squad
    Python
    Привет! Как понимаю тебе нужны стейты.
    Информацию про них можно найти тут и ещё в ютубе, так и вводи vkbottle стейты.

    from vkbottle import CtxStorage, BaseStateGroup
    from vkbottle.bot import Bot, Message
    
    """BOT"""
    bot = Bot(token="TOKEN")
    # ctx будет нужен для сохранения ответов.
    ctx = CtxStorage()
    
    # class в данном случае нужен для пошагового выполнения программы.
    class Reg(BaseStateGroup)
         NAME=0
         AGE=1
         ABOUT=2
         END=3 #END я добавляю чтобы стейт останавливался.
    
    @bot.on.private_message(lev="/reg")
    async def Name(message: Message):
         await bot.state_dispenser.set(message.peer_id, Reg.NAME) # Тут мы вторым аргументом предает Reg.Name, NAME у нас выступит как первый шаг.
         return "Введи свое имя..." #Это сообщение отправиться пользователю, после ему надо будет ответить.
    @bot.on.private_message(state=Reg.NAME) #Проще говоря, когда мы вводим state=Reg.NAME,  мы даем понять боту эта функция включится после активации Reg.NAME, мы его активировали в предыдущем блоке
    async def Age(message: Message):
         ctx.set('name', message.text) # Мы записываем ответ пользователя под ключом name
         await bot.state_dispenser.set(message.peer_id, Reg.AGE) 
         return "Сколько вам лет?"
    @bot.on.private_message(state=Reg.AGE)
    async def About(message: Message):
         ctx.set('age', message.text) 
         await bot.state_dispenser.set(message.peer_id, Reg.ABOUT) 
         return "Расскажи о себе...."
    @bot.on.private_message(state=Reg.ABOUT)
    async def finally(message: Message):
         ctx.set('about', message.text) 
         await message.answer(f"Вот твои данные:\n{ctx.get('name')}\n{ctx.get('age')}\n{ctx.get('about')}")
         return "Ваши данные сохранены"

    Надеюсь понятно изъяснился, если будут ошибки пиши!
    Ответ написан
    1 комментарий
  • Как отправить короткое имя пользователя вк Vkbottle? И как пересылать вложения в сообщениях?

    igor_89squad
    @igor_89squad
    Python
    Привет! Надеюсь понятно написал.

    user = await bot.api.users.get(message.from_id)
    print(user[0].id, user[0].first_name, user[0].last_name)
    Ответ написан
    Комментировать
  • Почему не выдаётся роль автоматически?

    igor_89squad
    @igor_89squad
    Python
    Писал тоже бота на дискорд.
    Лучше так сделать.
    @bot.event # Когда человек заходит на канал бот приветствует его.
    async def on_member_join(member):
        channel = bot.get_channel(id канала)
        await member.add_roles(discord.utils.get(member.guild.roles, id=роль))
        await channel.send(f'Добро пожаловать {member.name}!')
    Ответ написан