Задать вопрос
  • Ругается на async def successful_payment(message: types.Message): IndentationError: unexpected indent, что не так?

    @YakovSava
    Питонячий сишник
    Вы добавили лишний или вовсе не добавили отступ после async def. Рано вам ещё в асинхронное программирование, учите основы, пожалуйста, потом начните с чего-то легче, как например PyTelegramBotApi
    Ответ написан
    Комментировать
  • OSError: exception: access violation reading, ctypes, Python, что делаю не так?

    @YakovSava Автор вопроса
    Питонячий сишник
    В Общем я нашёл решение. Используйте getcwd() из os для того что бы указать полный путь (И НЕ ИСПОЛЬЗУЙТЕ "/" В windows!)

    test.py
    from os import getcwd
    from ctypes import *
    
    dll = cdll.LoadLibrary("./writer.dll")
    
    dll.write.argtypes = [c_char_p, c_char_p]
    dll.write(f"{getcwd()}\\filename.txt".encode(), b"Hello world!")


    writer.cxx
    # include <fstream>
    using namespace std;
    
    extern "C" __declspec(dllexport) void write(char* filename, char* lines) {
        ofstream file;
        file.open(filename, ios_base::out);
        if (file.is_open()) {
            file << lines << endl;
            file.close()
        }
    }


    compiling (clang)
    clang++ -c -o writer.o writer.cxx
    clang++ -shared -v -o writer.dll writer.o


    Дело было не связано с питоном, как предпологали некоторые
    Ответ написан
    Комментировать
  • VK Pay и VKBottle связать с ботом. Правильно ли написал код?

    @YakovSava
    Питонячий сишник
    Не знаю актуально ли дос их пор, но надеюсь кому-то пригодиться и этот человек не будет совершать моих ошибок.

    Нет, после оплаты не возникает ивента. Приходит лишь сообщение с определённым полем message.attachments под названием VkpayTransactionObject (см. больше тут), потому, лучше сделать так:
    @bot.on.private_message(text='подписка')
    async def subscribe_handler(message:Message):
    	group_id = 12345678 # Вставьте сюда ваш group_id
    	amount = 100 # Вставьте сюда сумму которую человек должен оплатить
    	pay = (Keyboard(one_time=False, inline=True)
    		.add(VKPay(payload={'pays': 0},  hash=f'action=pay-to-group&amount={amount}&group_id={num}')
    	)).get_json()
    	await message.answer('Вот кнопка для оплаты подписки', keyboard=pay)
    
    @bot.on.private_message(payload={'pays': 0})
    async def people_was_pay(message:Message):
    	await message.answer(f'Вы успешно оплатили подписку в размере {message.attachments[0].amount} рублей!')


    По поводу моего кода не очень уверен, возможно путь (message.attachments[0].amount) не совсем верный, просто в моём боте, я передавал сумму и другие данные вместе с полезной нагрузкой (payload). Хотел бы уточнить, что бот среагирует на payload только после оплаты т.е. отправки сообщения. Так же посоветую не прописывать pip3 install --upgrade vkbottle-types сразу, лучше устанавливать сразу с репозитория на гитхабе
    pip install -U https://github.com/vkbottle/vkbottle-types/archive/master.zip
    (Такой совет написан здесь) дабы не было каких-либо ошибок.
    Ответ написан
    Комментировать
  • В питоне не выбивает ошибки, но бот все ещё не отвечает на сообщение, можете помочь?

    @YakovSava
    Питонячий сишник
    Если токен от группы в ВК, убедитесь что вы выдали все соответствующие разрешения токену, включили longpoll API, включены возможности ботов, а так же сообщения сообщества. Так же убедитесь что вы включили в longpoll API приходящие уведомления о сообщениях.

    Это не ошибка в коде, прочитайте пожалуйста документацию ВК и не копипастите код ;)
    Ответ написан