VKWave - kerangka kerja untuk mengembangkan bot VK



Halo, Habr!



Hari ini saya ingin berbicara tentang perpustakaan yang luar biasa untuk mengembangkan bot VK menggunakan bahasa pemrograman Python.



VKWave



VKWave adalah kerangka pengembangan bot VK yang ditulis menggunakan asyncio. Tujuan utama dari proyek ini adalah untuk memungkinkan pengembang mengonfigurasi kerangka kerja sebanyak mungkin untuk dirinya sendiri, sementara pada saat yang sama memastikan kecepatan pengembangan yang layak.



Versi minimum Python yang dibutuhkan adalah 3.7



VKWave, . , , .



Telegram





:



pip install vkwave


!



Echo-



. , .



#   .
# SimpleLongPollBot:       
# SimpleBotEvent:  ,   SimpleLongPollBot
from vkwave.bots import SimpleLongPollBot, SimpleBotEvent

#   (   ,  vkwave    )
bot = SimpleLongPollBot(tokens=TOKEN, group_id=GROUP_ID)

#    .
#    ,         
@bot.message_handler()
def echo(event: SimpleBotEvent) -> str:
    #     , . vkwave ,     ,        .      ,       (          )
    return event.object.object.message.text

#      (    )
bot.run_forever()


.



- . , , /echo. — /echo .



Echo-



#     .         `/< >`.    ,     
@bot.message_handler(bot.command_filter("echo"))
def echo(event: SimpleBotEvent) -> str:
    #    
    args = event.object.object.message.text.split()
    # ,      
    #    - ,     - 
    if len(args) < 2:
        return " - !"
    #    (    )
    return " ".join(args[1:])


. , VKWave . : VKWave , .



Echo-



, .



#       
from vkwave.bots.core.dispatching.filters.base import BaseFilter, BaseEvent, FilterResult

#   ,    
class EchoFilter(BaseFilter):
    #    `__init__`    

    #    `check`,       
    async def check(self, event: BaseEvent) -> FilterResult:
        #     
        text = event.object.object.message.text
        #    
        all_args = text.split()
        #     -   
        if len(all_args) < 2:
            #  False.
            #   , , -  
            #    `event.api_ctx`,       
            return FilterResult(False)
        #    ( )  "/echo"  False
        if all_args[0] != "/echo":
            return FilterResult(False)
        #       
        event["echo_answer"] = " ".join(all_args[1:])
        return FilterResult(True)

#  
@bot.message_handler(EchoFilter())
def echo(event: SimpleBotEvent) -> str:
    #  ,    ""  
    return event["echo_answer"]




, , , VKWave. , middlewares, , , , HTTP !



, vk_api vk.



GitHub

Telegram




All Articles