Exemplo n.º 1
0
async def initiate_router(router):
    # router.registrar.register(
    #     router.registrar.new()
    #     .handle(test)
    #     .ready()
    # )

    router.registrar.register(router.registrar.new().with_filters(
        EventTypeFilter('message_new')
        & (ChatActionFilter(MessagesMessageActionStatus.CHAT_INVITE_USER)
           | ChatActionFilter(
               MessagesMessageActionStatus.CHAT_INVITE_USER_BY_LINK))).handle(
                   new_user).ready())

    router.registrar.register(router.registrar.new().with_filters(
        EventTypeFilter('message_new') &  # without callback button support!
        PayloadFilter(None)).handle(keyboard_msg).ready())

    router.registrar.register(router.registrar.new().with_filters(
        EventTypeFilter('message_new')
        & CommandFilter()).handle(command).ready())

    router.registrar.register(router.registrar.new().with_filters(
        EventTypeFilter('message_new')).handle(simple_msg).ready())
    return router
Exemplo n.º 2
0
 def decorator(func: typing.Callable[..., typing.Any]):
     record = self.router.registrar.new()
     record.with_filters(*filters)
     if self.bot_type is BotType.BOT:
         record.filters.append(EventTypeFilter(BotEventType.MESSAGE_NEW))
     else:
         record.filters.append(EventTypeFilter(EventId.MESSAGE_EVENT.value))
     record.handle(SimpleBotCallback(func, self.bot_type))
     self.router.registrar.register(record.ready())
     return func
Exemplo n.º 3
0
 def decorator(func: typing.Callable[..., typing.Any]):
     record = router.registrar.new()
     record.with_filters(*filters)
     record.filters.append(EventTypeFilter(EventId.MESSAGE_EVENT.value))
     record.handle(SimpleBotCallback(func, BotType.USER))
     router.registrar.register(record.ready())
     return func
Exemplo n.º 4
0
from vkwave.bots import Dispatcher, EventTypeFilter, TextFilter
from vkwave.bots.core.dispatching.events.base import BotEvent
from vkwave.bots.core.dispatching.extensions.longpoll_bot import BotLongpollExtension
from vkwave.bots.core.dispatching.router.router import DefaultRouter
from vkwave.bots.core.tokens.storage import TokenStorage
from vkwave.bots.core.tokens.types import GroupId
from vkwave.client.default import AIOHTTPClient
from vkwave.longpoll.bot import BotLongpoll, BotLongpollData

basicConfig(level="DEBUG")
logger = getLogger(__name__)

text = lambda text: TextFilter(text)
text_startswith = lambda text: lambda event: event.object.object.message.text.startswith(
    text)
new_message = EventTypeFilter("message_new")

router = DefaultRouter()
wd = router.registrar.with_decorator
api = API(BotSyncSingleToken(getenv("TOKEN")), AIOHTTPClient())
token_storage = TokenStorage[GroupId]()

dp = Dispatcher(api, token_storage)
ext = BotLongpollExtension(
    dp, BotLongpoll(api.get_context(), BotLongpollData(getenv("GROUP_ID"))))

client = AsyncUrbanClient()


def make_result(defs: List[UrbanDefinition]) -> str:
    result = ""
Exemplo n.º 5
0
    CommandsFilter,
    Keyboard,
)
from vkwave.client import AIOHTTPClient
from vkwave.api import BotSyncSingleToken, Token, API
from vkwave.longpoll.bot import BotLongpoll, BotLongpollData
from vkwave.types.bot_events import BotEventType

logging.basicConfig(level=logging.DEBUG)
bot_token = Token("123")
gid = 123
router = DefaultRouter()


@router.registrar.with_decorator(CommandsFilter(["hello"]),
                                 EventTypeFilter(BotEventType.MESSAGE_NEW))
async def kb_handler(event: BaseEvent):
    kb = Keyboard(one_time=True)
    kb.add_text_button(text="123456", payload={"hello": "world"})
    await event.api_ctx.messages.send(
        peer_id=event.object.object.message.peer_id,
        message="123",
        keyboard=kb.get_keyboard(),
        random_id=0,
    )


@router.registrar.with_decorator(PayloadFilter({"hello": "world"}),
                                 EventTypeFilter(BotEventType.MESSAGE_NEW))
async def handler(event: BaseEvent):
Exemplo n.º 6
0
from vkwave.bots import EventTypeFilter, BotEvent, SimpleLongPollBot
from vkwave.bots.fsm import FiniteStateMachine, StateFilter, ForWhat, State, ANY_STATE
from vkwave.types.bot_events import BotEventType


bot = SimpleLongPollBot("123", group_id=123)


fsm = FiniteStateMachine()
bot.router.registrar.add_default_filter(StateFilter(fsm, ..., ..., always_false=True))
bot.router.registrar.add_default_filter(
    EventTypeFilter(BotEventType.MESSAGE_NEW.value)
)  # we don't want to write it in all handlers.


class MyState:
    name = State("name")
    age = State("age")


# starting interview (has default filter that will reject messages if state exists)
@bot.message_handler(bot.text_filter("start"))
async def simple_handler(event: BotEvent):
    await fsm.set_state(event=event, state=MyState.name, for_what=ForWhat.FOR_USER)
    return "Input your name"


#  exiting interview (work with any state because of `state=ANY_STATE`)
@bot.message_handler(
    bot.text_filter("exit"), StateFilter(fsm=fsm, state=ANY_STATE, for_what=ForWhat.FOR_USER)
)
Exemplo n.º 7
0
    TextFilter,
    UserId,
)
from vkwave.client import AIOHTTPClient
from vkwave.api import API, BotSyncSingleToken, Token
from vkwave.longpoll import UserLongpollData, UserLongpoll
from vkwave.types.user_events import EventId

logging.basicConfig(level=logging.DEBUG)

bot_token = Token("token")
router = DefaultRouter()


# EventTypeFilter((3, 4, 5, 18)) == EventTypeFilter(EventId.MESSAGE_EVENT.value)
@router.registrar.with_decorator(EventTypeFilter(EventId.MESSAGE_EVENT.value),
                                 FromMeFilter(from_me=True))
async def from_me(event: UserEvent):
    print("from me:", event.object.object.text)


# FromMeFilter(from_me=False) -> message from other user
# FromMeFilter(from_me=True) -> message from me
@router.registrar.with_decorator(EventTypeFilter((3, 4, 5, 18)),
                                 FromMeFilter(from_me=False),
                                 TextFilter("hello"))
async def answer_hello(event: UserEvent):
    await event.api_ctx.messages.send(user_id=event.object.object.peer_id,
                                      message="hello!",
                                      random_id=0)
Exemplo n.º 8
0
 def _install_handler(bot: SimpleLongPollBot, handler: Callable,
                      event_type: BotEventType) -> None:
     record = bot.router.registrar.new()
     record.filters.append(EventTypeFilter(event_type))
     record.handle(bot.SimpleBotCallback(handler, bot.bot_type))
     bot.router.registrar.register(record.ready())