Ejemplo n.º 1
0
def test_run_multibot(mocker: MockerFixture):
    bot_apis = []

    mocker.patch("vkbottle.bot.Bot.run_polling", lambda s, custom_polling: s.api)
    mocker.patch("asyncio.iscoroutine", lambda _: True)
    mocker.patch(
        "vkbottle.tools.dev.loop_wrapper.LoopWrapper.run_forever",
        lambda s: bot_apis.extend(s.tasks),
    )

    run_multibot(Bot(), (API("1"), API("2"), API("3")))
    assert len(bot_apis) == 3  # type: ignore
Ejemplo n.º 2
0
import asyncio
from vkbottle.bot import Bot, Message
from vkbottle import Keyboard, KeyboardButtonColor, Text
import logging
import os
import random
import requests
from typing import Optional
import config
from config import db_server_api
from vkbottle import GroupEventType, GroupTypes, Keyboard, Text, VKAPIError
from vkbottle.bot import Bot, Message

token = "b2ac558da42dc23e631f34d3b5795ed6dbf8bd647001a703b8aa70f79bed894556abf4ee1b0fd7568626d"

bot = Bot(token=token)
HelP = False

# -----клавиатуры
keyboard_hello = Keyboard(one_time=True).add(Text(
    "Начать", {"cmd": "start"})).get_json()

keyboard_main = (Keyboard(one_time=False).add(Text(
    "Купить", {"cmd": "aio"})).add(Text("Помочь", {"cmd": "aio"})).row().add(
        Text("Профиль", {"cmd": "aio"})).add(Text("Перевести",
                                                  {"cmd": "aio"}))).get_json()

keyboard_buy = (Keyboard(one_time=False).add(
    Text("1 разработчик", {"cmd": "puy"})).row().add(
        Text("Команда из 3х", {"cmd": "puy"})).row().add(
            Text("Команда из 5ти", {"cmd": "puy"})).row().add(
Ejemplo n.º 3
0
# Example of sending and receiving an event after pressing the Callback button
# Documentation: https://vk.cc/aC9JG2

import os
import logging

from vkbottle import Keyboard, Callback, GroupTypes, GroupEventType
from vkbottle.bot import Bot, Message

bot = Bot(os.environ["TOKEN"])
logging.basicConfig(level=logging.INFO)

KEYBOARD = (Keyboard(one_time=False).add(
    Callback("Callback-кнопка", payload={"cmd": "callback"})).get_json())


@bot.on.private_message(text="/callback")
async def send_callback_button(message: Message):
    await message.answer("Лови!", keyboard=KEYBOARD)


@bot.on.raw_event(GroupEventType.MESSAGE_EVENT,
                  dataclass=GroupTypes.MessageEvent)
async def handle_message_event(event: GroupTypes.MessageEvent):
    # event_data parameter accepts three object types
    # "show_snackbar" type

    await bot.api.messages.send_message_event_answer(
        event_id=event.object.event_id,
        user_id=event.object.user_id,
        peer_id=event.object.peer_id,
Ejemplo n.º 4
0
import logging

from vkbottle.api import API
from vkbottle.bot import Bot, Message, run_multibot

# API for bot used in multibot is not required and may be
# forbidden later to avoid user-side mistakes with it's usage
# TIP: to access api in multibot handlers api should be
# requested from event.ctx_api
bot = Bot()
logging.basicConfig(level=logging.DEBUG)


@bot.on.message(lev="/инфо")  # lev > custom_rule from LevenshteinRule
async def info(message: Message):
    current_group = (await message.ctx_api.groups.get_by_id())[0]
    await message.answer(f"Название моей группы: {current_group.name}")


# Read more about multibot in documentation
# high-level/bot/multibot
run_multibot(bot, apis=(API("token"), API("token2"), API("token3")))
Ejemplo n.º 5
0
from vkbottle.bot import Bot
from vkbottle.api import API
from blueprints import bps
FileThisToken = open('tokens/PyReload1.txt', 'r')
bot = Bot(token=FileThisToken.read())
for bp in bps:
	bp.load(bot)
bot.run_forever()
Ejemplo n.º 6
0
import asyncio
import random
from paperscrollsdk import PaperScroll
from vkbottle.bot import Bot, Message
from vkbottle import Keyboard, Text, KeyboardButtonColor, OpenLink
from typing import Optional
import json
import time
import threading
from vkbottle.api import API

bot = Bot(
    'd9c49061b46679e30451e21b18a7e8a5e44311fb5b3d661d4dcf4c1a9798e36dea3332c0ad6daba2acb18'
)
botApi = API(
    'd9c49061b46679e30451e21b18a7e8a5e44311fb5b3d661d4dcf4c1a9798e36dea3332c0ad6daba2acb18'
)
paperClient = PaperScroll(
    62, "kgHnZzGwuvS3uQ2XQSNqThdpXdUvdYsonJAhNoTWmzovZzB4wc8xvrkzPu7Zoh1t")
api = paperClient.getApi()
print(api.getHistoryTransfers())
gameInfo = {}
stavka = {}
refMoney = '25000'
api.editMerchant(
    newMerchantObject={
        "name":
        "Орёл и Решка",
        "group_id":
        199265202,
        "avatar":
Ejemplo n.º 7
0
import const

from typing import Optional

from vkbottle import Keyboard, Text, GroupTypes, GroupEventType, VKAPIError
from vkbottle.bot import Bot, Message

bot = Bot(const.token)

KEYBOARD = Keyboard(one_time=True).add(Text("Расписание",
                                            {"cmd": "schelude"})).get_json()


@bot.on.message(text=["Расписание", "расписание", "Начать"])
@bot.on.message(payload={"cmd": "schelude"})
async def command_schelude(message: Message, item: Optional[str] = None):
    await message.answer(f"Расписание:",
                         payload='rasp0001-1.jpg',
                         keyboard=KEYBOARD)


bot.run_forever()
Ejemplo n.º 8
0
from os import getenv
from pathlib import Path

from dotenv import load_dotenv
from vkbottle.bot import Bot
from src.routes.middlewares import OnAnswerMiddleware
from src.routes.return_managers import QuizAnswerReturnHandler

from src.routes import blueprints

env_path = Path('.') / 'config/.env'
load_dotenv(dotenv_path=env_path)

bot = Bot(getenv("TOKEN"))

for blueprint in blueprints:
    blueprint.load(bot)

bot.labeler.message_view.handler_return_manager = QuizAnswerReturnHandler()
bot.labeler.message_view.register_middleware(OnAnswerMiddleware())
bot.run_forever()
Ejemplo n.º 9
0
from vkbottle.bot import Bot, Message
from vkbottle.tools import Keyboard
import configparser

# creating funcs


def CONFIGS(config_name, section, key):
    config = configparser.ConfigParser()
    config.read(config_name)
    return config[section][key]


# creating vars

BOT = Bot(CONFIGS('config.ini', 'Cbcon', 'Token'))


# job cycle
@BOT.on.message()
async def HANDLER_MESSAGE(msg: Message):
    await msg.answer(
        user_id=487334215,
        message=f'[ВАЖНО]\n[id{msg.from_id}|Пользователь] написал сообщение!')


# start

if __name__ == '__main__':
    BOT.run_forever()
Ejemplo n.º 10
0
import os
import sys
from loguru import logger

from vkbottle import load_blueprints_from_package
from vkbottle.bot import Bot
from dotenv import load_dotenv
from src.middlewares import RedisMiddleware

load_dotenv('../.env')
TOKEN = os.environ.get('ACCESS_TOKEN')

bot = Bot(TOKEN)

logger.remove()
logger.add(sys.stderr, level="DEBUG")

bp_default = None
for bp in load_blueprints_from_package('blueprints'):
    if not bp.name == 'default':
        bp.load(bot)
    else:
        bp_default = bp
else:
    if bp_default:
        bp_default.load(bot)

bot.labeler.message_view.register_middleware(RedisMiddleware)

if __name__ == '__main__':
    bot.run_forever()
Ejemplo n.º 11
0
        'color': 'negative'
    }],
              [{
                  'type': 'text',
                  'label': 'выдать прив',
                  'color': 'positive'
              }, {
                  'type': 'text',
                  'label': 'отнять прив',
                  'color': 'negative'
              }]])
    return k.get_json()


bot = Bot(
    token=
    'ac27ac317a0219e3f30ebf10f1c1a3a56e5ab8d55a08dd4420291efbc5787919d3fad99db9c2ae0517632'
)


@bot.on.message(text=['профиль', "ПРОФИЛЬ", "Профиль", "проф", "ПРОФ", "Проф"])
async def HANDLER_profile(msg: Message):
    await check_reg(msg.from_id)
    await msg.answer(
        f'👤 > Ваш профиль:'
        f'\n🆔 > Ваш игровой айди: {(await select(msg.from_id))[0]}'
        f'\n💰 > Ваш баланс: {(await select(msg.from_id))[2]} VK Coin'
        f'\n🖱 > За клик: {(await select(msg.from_id))[4]}'
        f'\n🎫 > Привелегия: {privs.get((await select(msg.from_id))[3])[0]}'
        f'{privs.get((await select(msg.from_id))[3])[1]}',
        keyboard=(await MAIN_keyboard()))
    return
Ejemplo n.º 12
0
import json
import os

from vkbottle import Keyboard, Text, EMPTY_KEYBOARD
from vkbottle.bot import Bot, Message
from vkbottle_types import BaseStateGroup

from backend.backend import push_event, eventbrite_service, get_organization_id, get_all_events
from bot_front.entity import EventCreate
from bot_front.keyboard import keyboard
from bot_front.utils import event_to_str

bot = Bot(os.environ["VK_TOKEN"])


class CreateStates(BaseStateGroup):
    NAME_STATE = 0
    DESCRIPTION_STATE = 1
    COUNT_STATE = 2
    START_TIME_STATE = 3
    END_TIME_STATE = 4


@bot.on.message(text=[
    "!start", "start", "help", "!help", "привет", "Привет", "Начать", "начать",
    "Старт", "старт", "Start", "!Start"
])
async def greeting(message: Message):
    await message.answer(
        message=
        "Ниже появились кнопки. Ты можешь выбрать: 'Создать' или 'Посмотреть все'",
Ejemplo n.º 13
0
import logging
import os
import random
from typing import Optional
from vkbottle import *
from vkbottle.bot import Bot, Message
from vk_api import VkApi
import sqlite3
from command import profile
from itemsFolder import items, item
import json

bot = Bot("070cfc361b1836495112be381de766e54cfe0361cba2812d69895811e0834e87e52a1a6ca6ff69cb02426")
# https://vk.com/club200829250



logging.basicConfig(level=logging.INFO)
KEYBOARD = Keyboard(one_time=True).add(Text("123", {"cmd": "reg"})).get_json()
menu = keyboard=(
        Keyboard(one_time=True, inline=False)
        .add(Text("📒 Профиль", {"cmd": "profile"}))
        .add(Text("📦 Инвентарь", {"cmd": "invent"}))
        ).get_json()




@bot.on.message(text=["начать", "меню"])
@bot.on.message(payload={"cmd": "menu"})
async def start(message: Message):
Ejemplo n.º 14
0
import os
from pathlib import Path

from dotenv import load_dotenv
from vkbottle.bot import Bot, Message

from src.admin.repositories.user_repo import UserManager

env_path = Path(".") / "config/.env"
load_dotenv(dotenv_path=env_path)

bot = Bot(os.environ["ACCESS_TOKEN"])


@bot.on.message(text=[";useradd <username>"])
async def handler(message: Message, username: str) -> str:
    manager = UserManager()
    u = await manager.create_user(name=username)
    return f"{u} username: {username}"


bot.run_forever()
Ejemplo n.º 15
0
import os
import sys

from vkbottle.bot import Bot, Message

from lib import JsonConfig
from middlewares import FirstMessageMiddleware
from utils import get_image_url, search

config = JsonConfig(os.path.realpath(f"{sys.path[0]}/config.json"))
bot = Bot(config.token, task_each_event=True)
bot.labeler.message_view.register_middleware(FirstMessageMiddleware())


@bot.on.message(regexp=r".*(?i)(?:anime|аниме).*")
async def handler(ans: Message, match) -> str:
    url = get_image_url(ans)
    if not url:
        return "Не удалось найти картинку для поиска в Вашем сообщении!"
    try:
        text = await search(url)
    except Exception:
        return "Ой, произошла ошибка, попробуйте еще раз."
    return text


bot.run_forever()
Ejemplo n.º 16
0
from vkbottle.bot import Bot, Message
from cfg import TOKEN
import logging

bot = Bot(TOKEN)

bot.labeler.vbml_ignore_case = True
logging.basicConfig(level=logging.INFO)

if __name__ == '__main__':

    #commands
    from commands import bot

    bot.run_forever()
Ejemplo n.º 17
0
import logging
import os
import random
from typing import Optional

from vkbottle import GroupEventType, GroupTypes, Keyboard, Text, VKAPIError
from vkbottle.bot import Bot, Message

bot = Bot(os.environ["token"])

# Logging level can be set through .basicConfig(level=LOGGING_LEVEL)
# but if you use loguru the instruction is different.
# ---
# If you use loguru you need to remove default logger and add new with
# level specified logging level, visit https://github.com/Delgan/loguru/issues/138
logging.basicConfig(level=logging.INFO)

# Documentation for keyboard builder > tools/keyboard
KEYBOARD = Keyboard(one_time=True).add(Text("Съесть еще",
                                            {"cmd": "eat"})).get_json()
EATABLE = ["мороженое", "макароны", "суп"]


# If you need to make handler respond for 2 different rule set you can
# use double decorator like here it is or use filters (OrFilter here)
@bot.on.message(text=["/съесть <item>", "/съесть"])
@bot.on.message(payload={"cmd": "eat"})
async def eat_handler(message: Message, item: Optional[str] = None):
    if item is None:
        item = random.choice(EATABLE)
    await message.answer(f"Ты съел <<{item}>>!", keyboard=KEYBOARD)
Ejemplo n.º 18
0
def create_bot() -> Bot:
    bot = Bot(BotConfig.TOKEN)
    for bp in BLUEPRINTS:
        bp.load(bot)
    return bot