Задать вопрос
Ответы пользователя по тегу Python
  • Как отправить сообщение от бота нескольким пользователям?

    @MarkSmersh
    Для начала нам нужно собрать chat_id пользователей. Например, когда пользователь пишет команду '/start', в функции бы было:
    chat_id = update.message.chat.id
    Записываем это значение в список, либо в базу данных (хоть в текстовый файл)
    После этого делаем саму отправку. Я бы сделал это так:
    bot = Bot(токен_бота)
    for user_number in range(len(список_с_пользователями)):
        chat_id = список_с_пользователями[user_number]
        bot.send_message (
            text = 'То, что ты хочешь написать',
            chat_id = chat_id)

    Бот будет отправлять сообщения пользователям, пока список не закончится

    (взял из комментов, чтобы вопрос не застаивался)
    Ответ написан
    Комментировать
  • Почему не применяются изменения в mysql?

    @MarkSmersh Автор вопроса
    Я решил в MySQL Workbench сделать ставку вручную, в таблицу + одно из значений было не совсем int, но это не помешало вставке работать. После этого всё начало работать. Я понимаю, что в этом нет никакой логики, но факт остаётся фактом. Итоговый код выглядит вот так:
    def scripts_send_messages_1(update: Update, context: CallbackContext):
        chat_id = update.callback_query.from_user['id']
        mydb = mysql.connector.connect(
            host = 'host ',
            user = 'user ',
            password = 'password ',
            database = 'database ')
        dbc = mydb.cursor()
        dbc.execute (f'SELECT vk_id FROM user WHERE chat_id={chat_id}')
        user_vk_id = dbc.fetchone()[0]
        sql = 'INSERT INTO history (thread_type, chat_id, vk_id, method) VALUES (%s, %s, %s, %s)'
        val = ('messages_send', chat_id, int(user_vk_id), 0)
        dbc.execute(sql, val)
        mydb.commit()
        bot.send_message (text = 'Отправьте *ссылку на группу* из которой будут использоваться посты:',
                          chat_id = chat_id,
                          parse_mode = ParseMode.MARKDOWN)
        return REPLY_IDS_GROUP
    Ответ написан
    Комментировать
  • Как реализовать инлайн-кнопку, которая будет отправлять отдельное сообщение?

    @MarkSmersh Автор вопроса
    В общем, через update.callback_query - нельзя отправить сообщение.
    Пришлось через bot.send_message, собирая chat_id
    Ответ написан
    Комментировать
  • Почему не работает callback инлайн-кнопка через vk_api?

    @MarkSmersh Автор вопроса
    Всё оказалось намного проще. Кнопка есть, но реакции на ответ не было, поэтому пишем:
    elif event.type == VkBotEventType.MESSAGE_EVENT:
            vk.messages.sendMessageEventAnswer(
                event_id=event.object.event_id,
                user_id=event.object.user_id,
                peer_id=event.object.peer_id,
                event_data=json.dumps(event.object.payload)
                )
    Ответ написан
    Комментировать
  • Как отправить запрос в друзья участнику группы через vk_api?

    @MarkSmersh Автор вопроса
    В общем, решилось всё само

    import vk_api
    
    GROUPS_IDS = ('айди групп')
    
    user_ids = api.method('groups.getMembers', {'group_id':random.choice(GROUPS_IDS), 'sort':('id_desc'), 'count':1000})['items']
            user = random.choice(user_ids)
            api.method('friends.add', {'user_id':user})
    Ответ написан
    Комментировать