mirror of
https://github.com/chatmail/core.git
synced 2026-05-02 12:56:30 +03:00
Use add_or_update_transport() instead of deprecated configure(), do not use deprecated get_next_messages(), make use of AttrDict, print invite link, do not use % formatting for logging.
52 lines
1.8 KiB
Python
Executable File
52 lines
1.8 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
"""
|
|
Example echo bot without using hooks
|
|
"""
|
|
|
|
import logging
|
|
import sys
|
|
|
|
from deltachat_rpc_client import DeltaChat, EventType, Rpc, SpecialContactId
|
|
|
|
|
|
def main():
|
|
with Rpc() as rpc:
|
|
deltachat = DeltaChat(rpc)
|
|
system_info = deltachat.get_system_info()
|
|
logging.info(f"Running deltachat core {system_info['deltachat_core_version']}")
|
|
|
|
accounts = deltachat.get_all_accounts()
|
|
account = accounts[0] if accounts else deltachat.add_account()
|
|
|
|
account.set_config("bot", "1")
|
|
if not account.is_configured():
|
|
logging.info("Account is not configured, configuring")
|
|
account.add_or_update_transport({"addr": sys.argv[1], "password": sys.argv[2]})
|
|
logging.info("Configured")
|
|
else:
|
|
logging.info("Account is already configured")
|
|
deltachat.start_io()
|
|
|
|
qr = account.get_qr_code()
|
|
logging.info(f"Invite link: {qr}")
|
|
while True:
|
|
event = account.wait_for_event()
|
|
if event.kind == EventType.INFO:
|
|
logging.info(event["msg"])
|
|
elif event.kind == EventType.WARNING:
|
|
logging.warning(event["msg"])
|
|
elif event.kind == EventType.ERROR:
|
|
logging.error(event["msg"])
|
|
elif event.kind == EventType.INCOMING_MSG:
|
|
logging.info("Got an incoming message")
|
|
message = account.get_message_by_id(event.msg_id)
|
|
snapshot = message.get_snapshot()
|
|
if snapshot.from_id != SpecialContactId.SELF and not snapshot.is_bot and not snapshot.is_info:
|
|
snapshot.chat.send_text(snapshot.text)
|
|
snapshot.message.mark_seen()
|
|
|
|
|
|
if __name__ == "__main__":
|
|
logging.basicConfig(level=logging.INFO)
|
|
main()
|