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

@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):

    await event.api_ctx.messages.send(
        peer_id=event.object.object.message.peer_id,
        message=
        f"Wow, you pressed the button! Your payload is {event.object.object.message.payload}",
        random_id=0,
    )


async def main():
    client = AIOHTTPClient()
    token = BotSyncSingleToken(bot_token)
    api_session = API(token, client)
Exemplo n.º 3
0
from vkwave.bots import (
    DefaultRouter,
    simple_bot_message_handler,
    SimpleBotEvent,
    PayloadFilter,
)

from helpers import create_one_day_schedule
from utils import get_now, is_weekend

today_schedule_router = DefaultRouter()


@simple_bot_message_handler(today_schedule_router, PayloadFilter({"command": "today"}))
async def today(event: SimpleBotEvent):
    now = get_now()
    if is_weekend(now):
        return "ниче нет"

    await event.answer(await create_one_day_schedule(now), dont_parse_links=True)
Exemplo n.º 4
0
from vkwave.bots import (
    DefaultRouter,
    simple_bot_message_handler,
    SimpleBotEvent,
    PayloadFilter,
)

from utils import get_now, create_percent, is_weekend

attend_apparently_router = DefaultRouter()


@simple_bot_message_handler(attend_apparently_router,
                            PayloadFilter({"command": "go"}))
async def send_go(event: SimpleBotEvent):
    now = get_now()
    if is_weekend(now):
        return "В выходные поучиться захотелось?"

    percent = create_percent(user_id=event.object.object.message.from_id,
                             now=now)

    await event.answer(f"Идти на пары стоит с вероятностью {percent}%")
Exemplo n.º 5
0
    coin = State("coin")


@simple_bot_message_handler(coin_flip_router, CommandsFilter("exit"))
async def games(event: SimpleBotEvent):
    if await fsm.get_data(event, for_what=ForWhat.FOR_USER) is not None:
        await fsm.finish(event=event, for_what=ForWhat.FOR_USER)
    return await event.answer(
        message=
        f"Выберите дальнейшее действие, {event['current_user'].first_name}",
        keyboard=MENU_KB.get_keyboard(),
    )


@simple_bot_message_handler(coin_flip_router,
                            PayloadFilter({"command": "coin_flip"}))
async def start_coin_flip(event: SimpleBotEvent):
    await fsm.set_state(event=event,
                        state=CoinState.bet,
                        for_what=ForWhat.FOR_USER)
    return await event.answer(
        message=f"Введите ставку, если передумали пишите /exit ",
        keyboard=Keyboard.get_empty_keyboard(),
    )


@simple_bot_message_handler(
    coin_flip_router,
    StateFilter(fsm=fsm, state=CoinState.bet, for_what=ForWhat.FOR_USER),
)
async def bet_router(event: SimpleBotEvent):
Exemplo n.º 6
0
from vkwave.bots import SimpleLongPollBot, Keyboard, CallbackAnswer, PayloadFilter
from vkwave.types.bot_events import BotEventType

bot = SimpleLongPollBot(tokens=["Token"], group_id=123)


@bot.message_handler(bot.text_filter("123"))
async def simple(event: bot.SimpleBotEvent):
    kb = Keyboard()
    kb.add_callback_button(payload={"21321": "123"}, text="123")
    await event.answer("HELLO", keyboard=kb.get_keyboard())


@bot.handler(bot.event_type_filter(BotEventType.MESSAGE_EVENT),
             PayloadFilter({"21321": "123"}))
async def all(event: bot.SimpleBotEvent):
    await event.callback_answer(event_data=CallbackAnswer.open_link(
        link="https://google.com"))


bot.run_forever()
Exemplo n.º 7
0
@bot.message_handler(bot.text_contains_filter('start'))
async def kb_handler(event: BaseEvent):
    kb = Keyboard(one_time=False)

    kb.add_text_button(text='анекдот', payload={"anec": "default"})
    kb.add_text_button(text='анекдот про замая', payload={"anec": "zamai"})
    kb.add_row()
    kb.add_text_button(text='дней до школы', payload={"date": "school"})
    kb.add_text_button(text='дата регистрации', payload={"date": "reg"})

    await event.answer(message="[d34th1sn34r|боты дёшево куда угодно]",
                       keyboard=kb.get_keyboard())


@bot.message_handler(PayloadFilter({"anec": "default"}))
async def anec(event: BaseEvent):
    rawcontent = requests.get(
        'http://rzhunemogu.ru/RandJSON.aspx?CType=1').text
    await event.answer(json.loads(rawcontent, strict=False)['content'])


@bot.message_handler(PayloadFilter({"anec": "zamai"}))
async def zamayAnec(event: BaseEvent):
    await event.answer(
        'Как-то Бог и Дьявол пошли получать зарплату. Бог должен был получить апрельскую зарплату, а дьявол майскую. Но в бухгалтерии всё перепутали и за апрель получил дьявол, а ЗАМАЙ БОГ.'
    )


@bot.message_handler(PayloadFilter({"date": "reg"}))
async def DateOfReg(event: BaseEvent):
Exemplo n.º 8
0
from vkwave.bots import (
    DefaultRouter,
    simple_bot_message_handler,
    PayloadFilter,
    SimpleBotEvent,
)
from vkwave.bots.storage.types import Key

from storage import storage

schedule_router = DefaultRouter()


@simple_bot_message_handler(schedule_router,
                            PayloadFilter({"command": "schedule"}))
async def send_schedule(event: SimpleBotEvent):
    kb = await storage.get(Key("current_kb"))
    await event.answer(keyboard=kb.get_keyboard(), message="Выберите день")
Exemplo n.º 9
0
import time
import datetime

from vkwave.bots import (
    DefaultRouter,
    simple_bot_message_handler,
    PayloadFilter,
    SimpleBotEvent,
)

from db.models.user import User

bonus_router = DefaultRouter()


@simple_bot_message_handler(bonus_router, PayloadFilter({"command": "bonus"}))
async def bonus(event: SimpleBotEvent):
    user: User = event["current_user"]
    if time.time() - user.last_bonus_time <= 86400:
        return await event.answer(
            f"Бонус доступен раз в день, следующий будет доступен -"
            f" {datetime.datetime.fromtimestamp(86400 + user.last_bonus_time)}"
        )
    user.last_bonus_time = time.time()
    user.balance += 1000
    await user.commit()
    return await event.answer("Получен бонус 1000!")
Exemplo n.º 10
0
import datetime

from vkwave.bots import (
    DefaultRouter,
    simple_bot_message_handler,
    SimpleBotEvent,
    PayloadFilter,
)

from helpers import create_one_day_schedule
from utils import get_now, is_weekend

tomorrow_schedule_router = DefaultRouter()


@simple_bot_message_handler(tomorrow_schedule_router,
                            PayloadFilter({"command": "tomorrow"}))
async def tomorrow(event: SimpleBotEvent):
    now = get_now()
    tomorrow_date = now + datetime.timedelta(days=1)
    if is_weekend(tomorrow_date):
        return "завтра выходной, хд"

    await event.answer(
        await create_one_day_schedule(tomorrow_date, tomorrow=True),
        dont_parse_links=True,
    )
Exemplo n.º 11
0
from vkwave.bots import (
    DefaultRouter,
    SimpleBotEvent,
    simple_bot_message_handler,
    PayloadFilter,
)

from utils.constants import GAMES_KB

games_router = DefaultRouter()


@simple_bot_message_handler(games_router, PayloadFilter({"command": "games"}))
async def games(event: SimpleBotEvent):
    return await event.answer(message=f"Выберите игру",
                              keyboard=GAMES_KB.get_keyboard())
Exemplo n.º 12
0
from vkwave.bots import (
    DefaultRouter,
    simple_bot_message_handler,
    PayloadFilter,
    SimpleBotEvent,
)

from helpers import get_current_schedule_for_which_and_next, get_current_lesson
from utils import create_text_schedule_for_one_lesson

current_lesson_router = DefaultRouter()


@simple_bot_message_handler(current_lesson_router,
                            PayloadFilter({"command": "which"}))
async def send_schedule(event: SimpleBotEvent):
    current_schedule = await get_current_schedule_for_which_and_next()
    if current_schedule is None:
        return "Какие пары иди спи"

    current_lesson = get_current_lesson(current_schedule)
    if current_lesson is not None:
        return await event.answer(
            message=create_text_schedule_for_one_lesson(current_lesson),
            dont_parse_links=True,
        )

    return "Сейчас пары нет"
Exemplo n.º 13
0
    SimpleBotEvent,
)

from helpers import (
    get_current_schedule_for_which_and_next,
    get_current_lesson,
    get_schedule_and_days,
    create_next_lesson_message,
    correct_schedule,
)
from utils import get_now, get_current_timedelta

next_lesson_router = DefaultRouter()


@simple_bot_message_handler(next_lesson_router, PayloadFilter({"command": "next"}))
async def next_lesson(event: SimpleBotEvent):
    schedule, days = await get_schedule_and_days()
    now = get_now()
    current_schedule = await get_current_schedule_for_which_and_next()

    if current_schedule is None:
        return "некст пара не обнаружена))"
    current_timedelta = get_current_timedelta()
    current_lesson = get_current_lesson(current_schedule)

    message = create_next_lesson_message(
        current_schedule=current_schedule,
        current_timedelta=current_timedelta,
        current_lesson=current_lesson,
        days=days,