mautrix / whatsapp

A Matrix-WhatsApp puppeting bridge

Home Page:https://maunium.net/go/mautrix-whatsapp

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Bot account not created with conduit server. Error in bridge logs shows: M_FORBIDDEN: User does not exist.

jmaris opened this issue · comments

After starting the bot, I get the following error:

2023-12-23T23:16:27Z INF Initializing bridge built_at="Dec 19 2023, 12:57:29" go_version=go1.21.5 name=mautrix-whatsapp version=0.10.5+dev.a1f1c91b
2023-12-23T23:16:27Z DBG Initializing database connection
2023-12-23T23:16:27Z DBG Initializing state store
2023-12-23T23:16:27Z DBG Initializing Matrix event processor
2023-12-23T23:16:27Z DBG Initializing Matrix event handler
2023-12-23T23:16:27Z DBG Bridge built with end-to-bridge encryption, but disabled in config
2023-12-23T23:16:27Z INF Bridge initialization complete, starting...
2023-12-23T23:16:27Z DBG Running database upgrades
2023-12-23T23:16:27Z INF Database is up to date current_version=57 db_section=main latest_known_version=57 oldest_compatible_version=45
2023-12-23T23:16:27Z INF Database is up to date current_version=5 db_section=matrix_state latest_known_version=5 oldest_compatible_version=5
2023-12-23T23:16:27Z DBG Starting application service HTTP server
2023-12-23T23:16:27Z DBG Checking connection to homeserver
2023-12-23T23:16:27Z INF Starting HTTP listener address=0.0.0.0:29318
2023-12-23T23:16:27Z DBG Request completed as_user_id=@whatsappbot:jmaris.me duration=1.818771 method=GET req_id=1 response_length=118 response_mime=application/json status_code=200 url=http://matrix:6167/_matrix/client/versions?user_id=%40whatsappbot%3Ajmaris.me
2023-12-23T23:16:27Z DBG Request completed as_user_id=@whatsappbot:jmaris.me duration=0.44378 method=GET req_id=2 response_length=69 response_mime=application/json status_code=403 url=http://matrix:6167/_matrix/client/v3/account/whoami?user_id=%40whatsappbot%3Ajmaris.me
2023-12-23T23:16:27Z FTL /whoami request failed with unknown error error="failed to GET /_matrix/client/v3/account/whoami: M_FORBIDDEN (HTTP 403): M_FORBIDDEN: User does not exist."

``

I have set up mautrix-whatsapp with conduit using docker compose with the following compose file. I have checked that matrix is accessible for containers inside the compose file, but I can't check that the bridge is accessible from the matrix server because the bridge constantly restarts.

version: '3'

services:
homeserver:
image: matrixconduit/matrix-conduit:latest
container_name: matrix
restart: unless-stopped
ports:
- 8448:6167
volumes:
- /home/services/matrix/db:/var/lib/matrix-conduit/:z
environment:
CONDUIT_SERVER_NAME: (REDACTED)
CONDUIT_DATABASE_PATH: /var/lib/matrix-conduit/
CONDUIT_DATABASE_BACKEND: rocksdb
CONDUIT_PORT: 6167
CONDUIT_MAX_REQUEST_SIZE: 20_000_000 # in bytes, ~20 MB
CONDUIT_ALLOW_REGISTRATION: 'true'
CONDUIT_ALLOW_FEDERATION: 'true'
CONDUIT_ALLOW_CHECK_FOR_UPDATES: 'true'
CONDUIT_TRUSTED_SERVERS: '["matrix.org"]'
#CONDUIT_MAX_CONCURRENT_REQUESTS: 100
#CONDUIT_LOG: warn,rocket=off,_=off,sled=off
CONDUIT_ADDRESS: 0.0.0.0
CONDUIT_CONFIG: '' # Ignore this

mautrix-whatsapp:
    container_name: mautrix-whatsapp
    image: dock.mau.dev/mautrix/whatsapp:latest
    restart: unless-stopped
    volumes:
    - /home/services/matrix/whatsapp:/data:z


bridgedb:
    image: docker.io/library/postgres:14
    restart: unless-stopped
    volumes:
      - /home/services/matrix/bridgedb:/var/lib/postgresql/data:z
    environment:
      - POSTGRES_USER=(redacted)
      - POSTGRES_PASSWORD=(redacted)
bridgedb already contains a database for the bridge.


the bridge config is as follows:

Homeserver details.

homeserver:
address: http://matrix:6167
domain: (redacted)

software: standard
status_endpoint: null
message_send_checkpoint_endpoint: null
async_media: false
websocket: false
ping_interval_seconds: 0

appservice:
address: http://mautrix-whatsapp:29318
hostname: 0.0.0.0
port: 29318

database:
    type: postgres
    uri: postgres://(redacted):(redacted)@bridgedb/whatsapp?sslmode=disable
    max_open_conns: 20
    max_idle_conns: 2
    max_conn_idle_time: null
    max_conn_lifetime: null

id: whatsapp
bot:
    username: whatsappbot
    displayname: WhatsApp bridge bot
    avatar: mxc://maunium.net/NeXNQarUbrlYBiPCpprYsRqr
ephemeral_events: true
async_transactions: false

as_token: "(redacted)"
hs_token: "(redacted)"

Config for things that are directly sent to WhatsApp.

whatsapp:
os_name: Mautrix-WhatsApp bridge
browser_name: unknown

Bridge config

bridge:
username_template: whatsapp_{{.}}
displayname_template: "{{or .BusinessName .PushName .JID}} (WA)"
personal_filtering_spaces: false
delivery_receipts: false
message_status_events: false
message_error_notices: true
call_start_notices: true
identity_change_notices: false
portal_message_buffer: 128
history_sync:
backfill: true
max_initial_conversations: -1
message_count: 50
request_full_sync: false
full_sync_config:
days_limit: null
size_mb_limit: null
storage_quota_mb: null
unread_hours_threshold: 0

    media_requests:
        auto_request_media: true
        request_method: immediate
        request_local_time: 120
    immediate:
        worker_count: 1
        max_events: 10
    deferred:
        - start_days_ago: 7
          max_batch_events: 20
          batch_delay: 5
        - start_days_ago: 30
          max_batch_events: 50
          batch_delay: 10
        - start_days_ago: 90
          max_batch_events: 100
          batch_delay: 10
        - start_days_ago: -1
          max_batch_events: 500
          batch_delay: 10
user_avatar_sync: true
bridge_matrix_leave: true
sync_direct_chat_list: false
sync_manual_marked_unread: true
default_bridge_presence: true
send_presence_on_typing: false
force_active_delivery_receipts: false
double_puppet_server_map:
    example.com: https://example.com
double_puppet_allow_discovery: false
login_shared_secret_map:
    example.com: foobar
private_chat_portal_meta: default
parallel_member_sync: false
bridge_notices: true
resend_bridge_info: false
mute_bridging: false
archive_tag: null
pinned_tag: null
tag_only_on_create: true
enable_status_broadcast: true
disable_status_broadcast_send: true
mute_status_broadcast: true
status_broadcast_tag: m.lowpriority
whatsapp_thumbnail: false
allow_user_invite: false
federate_rooms: true
disable_bridge_alerts: false
crash_on_stream_replaced: false
url_previews: false
caption_in_message: false
beeper_galleries: false
extev_polls: false
cross_room_replies: false
disable_reply_fallbacks: false
message_handling_timeout:
    error_after: null
    deadline: 120s

command_prefix: "!wa"

management_room_text:
    welcome: "Hello, I'm a WhatsApp bridge bot."
    welcome_connected: "Use `help` for help."
    welcome_unconnected: "Use `help` for help or `login` to log in."
    additional_help: ""

encryption:
    allow: false
    default: false
    appservice: false
    require: false
    allow_key_sharing: false
    plaintext_mentions: false
    delete_keys:
        delete_outbound_on_ack: false
        dont_store_outbound: false
        ratchet_on_decrypt: false
        delete_fully_used_on_decrypt: false
        delete_prev_on_new_session: false
        delete_on_device_delete: false
        periodically_delete_expired: false
        delete_outdated_inbound: false
    verification_levels:
        receive: unverified
        send: unverified
        share: cross-signed-tofu
    rotation:
        enable_custom: false
        milliseconds: 604800000
        messages: 100
        disable_device_change_key_rotation: false

provisioning:
    prefix: /_matrix/provision
    shared_secret: (redacted)
    debug_endpoints: false

permissions:
    "*": relay
    "(redacted server domain)": user
    "(redacted @username:serverdomain)": admin

relay:
    enabled: false
    admin_only: true
    message_formats:
        m.text: "<b>{{ .Sender.Displayname }}</b>: {{ .Message }}"
        m.notice: "<b>{{ .Sender.Displayname }}</b>: {{ .Message }}"
        m.emote: "* <b>{{ .Sender.Displayname }}</b> {{ .Message }}"
        m.file: "<b>{{ .Sender.Displayname }}</b> sent a file"
        m.image: "<b>{{ .Sender.Displayname }}</b> sent an image"
        m.audio: "<b>{{ .Sender.Displayname }}</b> sent an audio file"
        m.video: "<b>{{ .Sender.Displayname }}</b> sent a video"
        m.location: "<b>{{ .Sender.Displayname }}</b> sent a location"

@jmaris if you use @conduit:domain.tld: create-user whatsappbot it will work

Thanks :)