コード例 #1
0
async def test_handle_raised_forbidden():
    # Given
    clientside_error_message = "The bot has insufficient permissions to do this."

    message_provider = MagicMock(MessageProvider)
    message_provider.bot_missing_access.return_value = clientside_error_message

    route_handler = _route_handler(message_provider=message_provider)

    event = DiscordEvent(command=DiscordCommand(command_name="ping", ))

    mock_route = AsyncMock(Route)
    mock_route.call.side_effect = discord.Forbidden(
        MagicMock(aiohttp.ClientResponse), "Missing Access.")

    route_definition = RouteDefinition(
        route=mock_route,
        command="ping",
    )

    # When
    response = await route_handler.handle(event, route_definition)

    # Then
    assert response.is_ephemeral
    assert response.content == clientside_error_message
コード例 #2
0
def _make_event(guild_id: int = -1,
                options: typing.Dict = None) -> DiscordEvent:
    if options is None:
        options = {}

    return DiscordEvent(command=DiscordCommand(
        command_name="admin",
        subcommand_name="remove-management-role",
        options=options),
                        guild_id=guild_id,
                        member=DiscordMember())
コード例 #3
0
def _make_event(guild_id: int = -1,
                options: typing.Dict = None) -> DiscordEvent:
    if options is None:
        options = {}

    return DiscordEvent(command=DiscordCommand(
        command_id=-1,
        command_name="admin",
        subcommand_name="does-not-matter",
        options=options),
                        guild_id=guild_id,
                        member=DiscordMember())
コード例 #4
0
def from_event(event_source: Dict) -> DiscordEvent:
    if event_source['type'] == InteractionType.PING:
        return DiscordEvent(command=DiscordCommand(command_name="ping"), )
    else:
        channel_id = int(event_source['channel_id'])
        guild_id = int(event_source['guild_id'])
        command = _command_from_data(event_source['data'])
        member = _member_from_data(event_source['member'])

        return DiscordEvent(channel_id=channel_id,
                            guild_id=guild_id,
                            command=command,
                            member=member)
コード例 #5
0
def _make_event(guild_id: int = -1, options: typing.Dict = None, discord_member: DiscordMember = None,
                channel_id: int = -1):
    if options is None:
        options = {}

    if discord_member is None:
        discord_member = DiscordMember()

    return DiscordEvent(
        guild_id=guild_id,
        channel_id=channel_id,
        command=DiscordCommand(
            command_name="manage",
            subcommand_name="edit-guess",
            options=options,
        ),
        member=discord_member
    )
コード例 #6
0
async def test_handle():
    # Given
    route_handler = _route_handler()

    event = DiscordEvent(command=DiscordCommand(command_name="ping", ))

    response = DiscordResponse.ephemeral_channel_message(
        "You handled it very well!")

    mock_route = AsyncMock(Route)
    mock_route.call.return_value = response

    route_definition = RouteDefinition(
        route=mock_route,
        command="ping",
    )

    # When
    response = await route_handler.handle(event, route_definition)

    # Then
    assert response == response