Ecoer Logo
VOTING POWER100.00%
DOWNVOTE POWER100.00%
RESOURCE CREDITS100.00%
REPUTATION PROGRESS0.00%
Net Worth
0.022USD
STEEM
0.003STEEM
SBD
0.030SBD
Effective Power
5.007SP
├── Own SP
0.126SP
└── Incoming Deleg
+4.882SP

Detailed Balance

STEEM
balance
0.000STEEM
market_balance
0.000STEEM
savings_balance
0.000STEEM
reward_steem_balance
0.003STEEM
STEEM POWER
Own SP
0.126SP
Delegated Out
0.000SP
Delegation In
4.882SP
Effective Power
5.007SP
Reward SP (pending)
0.021SP
SBD
sbd_balance
0.000SBD
sbd_conversions
0.000SBD
sbd_market_balance
0.000SBD
savings_sbd_balance
0.000SBD
reward_sbd_balance
0.030SBD
{
  "balance": "0.000 STEEM",
  "savings_balance": "0.000 STEEM",
  "reward_steem_balance": "0.003 STEEM",
  "vesting_shares": "204.124978 VESTS",
  "delegated_vesting_shares": "0.000000 VESTS",
  "received_vesting_shares": "7939.534828 VESTS",
  "sbd_balance": "0.000 SBD",
  "savings_sbd_balance": "0.000 SBD",
  "reward_sbd_balance": "0.030 SBD",
  "conversions": []
}

Account Info

namedev.central
id872233
rank1,253,546
reputation717516485
created2018-03-17T15:56:24
recovery_accountsteem
proxyNone
post_count3
comment_count0
lifetime_vote_count0
witnesses_voted_for0
last_post2018-04-03T00:33:03
last_root_post2018-04-03T00:33:03
last_vote_time2018-03-25T18:36:33
proxied_vsf_votes0, 0, 0, 0
can_vote1
voting_power0
delayed_votes0
balance0.000 STEEM
savings_balance0.000 STEEM
sbd_balance0.000 SBD
savings_sbd_balance0.000 SBD
vesting_shares204.124978 VESTS
delegated_vesting_shares0.000000 VESTS
received_vesting_shares7939.534828 VESTS
reward_vesting_balance42.813802 VESTS
vesting_balance0.000 STEEM
vesting_withdraw_rate0.000000 VESTS
next_vesting_withdrawal1969-12-31T23:59:59
withdrawn0
to_withdraw0
withdraw_routes0
savings_withdraw_requests0
last_account_recovery1970-01-01T00:00:00
reset_accountnull
last_owner_update1970-01-01T00:00:00
last_account_update2018-04-02T00:06:30
minedNo
sbd_seconds0
sbd_last_interest_payment1970-01-01T00:00:00
savings_sbd_last_interest_payment1970-01-01T00:00:00
{
  "active": {
    "account_auths": [],
    "key_auths": [
      [
        "STM8MbsqRtge6hPLY34DnhYJpSJpJRtVGajLdtGpGBGzhX7TEkjZd",
        1
      ]
    ],
    "weight_threshold": 1
  },
  "balance": "0.000 STEEM",
  "can_vote": true,
  "comment_count": 0,
  "created": "2018-03-17T15:56:24",
  "curation_rewards": 0,
  "delegated_vesting_shares": "0.000000 VESTS",
  "downvote_manabar": {
    "current_mana": 2035914951,
    "last_update_time": 1779060366
  },
  "guest_bloggers": [],
  "id": 872233,
  "json_metadata": "{\"profile\":{\"profile_image\":\"https://i.imgur.com/VcUGpgr.png\"}}",
  "last_account_recovery": "1970-01-01T00:00:00",
  "last_account_update": "2018-04-02T00:06:30",
  "last_owner_update": "1970-01-01T00:00:00",
  "last_post": "2018-04-03T00:33:03",
  "last_root_post": "2018-04-03T00:33:03",
  "last_vote_time": "2018-03-25T18:36:33",
  "lifetime_vote_count": 0,
  "market_history": [],
  "memo_key": "STM4xSTiP354viAXpeaa6d1UGnmzB1ZM9A7xGbMdNXBRvXbg3ByVP",
  "mined": false,
  "name": "dev.central",
  "next_vesting_withdrawal": "1969-12-31T23:59:59",
  "other_history": [],
  "owner": {
    "account_auths": [],
    "key_auths": [
      [
        "STM8CjoNL4TXFth46dYp1MvvQ3ZMuZdV6Bsv8P9QMbtEmTbeA73n6",
        1
      ]
    ],
    "weight_threshold": 1
  },
  "pending_claimed_accounts": 0,
  "post_bandwidth": 0,
  "post_count": 3,
  "post_history": [],
  "posting": {
    "account_auths": [
      [
        "dtube.app",
        1
      ],
      [
        "utopian.app",
        1
      ]
    ],
    "key_auths": [
      [
        "STM6brmktsruZTVEEJop1ZQxvgXPLxr9LeM2dtExBVev9x2ocDGT9",
        1
      ]
    ],
    "weight_threshold": 1
  },
  "posting_json_metadata": "{\"profile\":{\"profile_image\":\"https://i.imgur.com/VcUGpgr.png\"}}",
  "posting_rewards": 41,
  "proxied_vsf_votes": [
    0,
    0,
    0,
    0
  ],
  "proxy": "",
  "received_vesting_shares": "7939.534828 VESTS",
  "recovery_account": "steem",
  "reputation": 717516485,
  "reset_account": "null",
  "reward_sbd_balance": "0.030 SBD",
  "reward_steem_balance": "0.003 STEEM",
  "reward_vesting_balance": "42.813802 VESTS",
  "reward_vesting_steem": "0.021 STEEM",
  "savings_balance": "0.000 STEEM",
  "savings_sbd_balance": "0.000 SBD",
  "savings_sbd_last_interest_payment": "1970-01-01T00:00:00",
  "savings_sbd_seconds": "0",
  "savings_sbd_seconds_last_update": "1970-01-01T00:00:00",
  "savings_withdraw_requests": 0,
  "sbd_balance": "0.000 SBD",
  "sbd_last_interest_payment": "1970-01-01T00:00:00",
  "sbd_seconds": "0",
  "sbd_seconds_last_update": "1970-01-01T00:00:00",
  "tags_usage": [],
  "to_withdraw": 0,
  "transfer_history": [],
  "vesting_balance": "0.000 STEEM",
  "vesting_shares": "204.124978 VESTS",
  "vesting_withdraw_rate": "0.000000 VESTS",
  "vote_history": [],
  "voting_manabar": {
    "current_mana": "8143659806",
    "last_update_time": 1779060366
  },
  "voting_power": 0,
  "withdraw_routes": 0,
  "withdrawn": 0,
  "witness_votes": [],
  "witnesses_voted_for": 0,
  "rank": 1253546
}

Withdraw Routes

IncomingOutgoing
Empty
Empty
{
  "incoming": [],
  "outgoing": []
}
From Date
To Date
steemdelegated 4.882 SP to @dev.central
2026/05/17 23:26:06
delegatorsteem
delegateedev.central
vesting shares7939.534828 VESTS
Transaction InfoBlock #106142470/Trx 8568960a32a4b4541aef146ff609fd24084b0006
View Raw JSON Data
{
  "trx_id": "8568960a32a4b4541aef146ff609fd24084b0006",
  "block": 106142470,
  "trx_in_block": 2,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2026-05-17T23:26:06",
  "op": [
    "delegate_vesting_shares",
    {
      "delegator": "steem",
      "delegatee": "dev.central",
      "vesting_shares": "7939.534828 VESTS"
    }
  ]
}
steemdelegated 3.214 SP to @dev.central
2026/05/12 00:31:39
delegatorsteem
delegateedev.central
vesting shares5227.324423 VESTS
Transaction InfoBlock #105971744/Trx f8edec75a756a64af1ceda3cee472db20aec85a5
View Raw JSON Data
{
  "trx_id": "f8edec75a756a64af1ceda3cee472db20aec85a5",
  "block": 105971744,
  "trx_in_block": 1,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2026-05-12T00:31:39",
  "op": [
    "delegate_vesting_shares",
    {
      "delegator": "steem",
      "delegatee": "dev.central",
      "vesting_shares": "5227.324423 VESTS"
    }
  ]
}
steemdelegated 4.889 SP to @dev.central
2026/04/25 22:48:27
delegatorsteem
delegateedev.central
vesting shares7952.050584 VESTS
Transaction InfoBlock #105510149/Trx cf21b5f2a583fde5f39f82b61dbf02e7168447ec
View Raw JSON Data
{
  "trx_id": "cf21b5f2a583fde5f39f82b61dbf02e7168447ec",
  "block": 105510149,
  "trx_in_block": 0,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2026-04-25T22:48:27",
  "op": [
    "delegate_vesting_shares",
    {
      "delegator": "steem",
      "delegatee": "dev.central",
      "vesting_shares": "7952.050584 VESTS"
    }
  ]
}
steemdelegated 3.240 SP to @dev.central
2026/01/23 05:36:12
delegatorsteem
delegateedev.central
vesting shares5268.871242 VESTS
Transaction InfoBlock #102849174/Trx 32fd298da9bba21b4a6c1f0b312462b1e7fd317f
View Raw JSON Data
{
  "trx_id": "32fd298da9bba21b4a6c1f0b312462b1e7fd317f",
  "block": 102849174,
  "trx_in_block": 1,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2026-01-23T05:36:12",
  "op": [
    "delegate_vesting_shares",
    {
      "delegator": "steem",
      "delegatee": "dev.central",
      "vesting_shares": "5268.871242 VESTS"
    }
  ]
}
steemdelegated 3.340 SP to @dev.central
2024/12/17 00:56:00
delegatorsteem
delegateedev.central
vesting shares5433.090439 VESTS
Transaction InfoBlock #91295598/Trx 60ba59f1f0b5c09b34e97bfb439d298f64ee7c10
View Raw JSON Data
{
  "trx_id": "60ba59f1f0b5c09b34e97bfb439d298f64ee7c10",
  "block": 91295598,
  "trx_in_block": 0,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2024-12-17T00:56:00",
  "op": [
    "delegate_vesting_shares",
    {
      "delegator": "steem",
      "delegatee": "dev.central",
      "vesting_shares": "5433.090439 VESTS"
    }
  ]
}
steemdelegated 3.444 SP to @dev.central
2023/11/13 16:39:27
delegatorsteem
delegateedev.central
vesting shares5602.223971 VESTS
Transaction InfoBlock #79849824/Trx 4def391d83d5b41cfba2aaaa6fd407e86581934e
View Raw JSON Data
{
  "trx_id": "4def391d83d5b41cfba2aaaa6fd407e86581934e",
  "block": 79849824,
  "trx_in_block": 1,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2023-11-13T16:39:27",
  "op": [
    "delegate_vesting_shares",
    {
      "delegator": "steem",
      "delegatee": "dev.central",
      "vesting_shares": "5602.223971 VESTS"
    }
  ]
}
steemdelegated 5.250 SP to @dev.central
2023/09/21 20:52:00
delegatorsteem
delegateedev.central
vesting shares8539.502757 VESTS
Transaction InfoBlock #78346675/Trx a73231780f70ea991f1502fd79d5a72fb0c3d5fe
View Raw JSON Data
{
  "trx_id": "a73231780f70ea991f1502fd79d5a72fb0c3d5fe",
  "block": 78346675,
  "trx_in_block": 0,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2023-09-21T20:52:00",
  "op": [
    "delegate_vesting_shares",
    {
      "delegator": "steem",
      "delegatee": "dev.central",
      "vesting_shares": "8539.502757 VESTS"
    }
  ]
}
steemdelegated 5.387 SP to @dev.central
2022/11/03 10:47:12
delegatorsteem
delegateedev.central
vesting shares8761.184195 VESTS
Transaction InfoBlock #69112167/Trx eebe6ee7d212f2f925315aa347fc332bc89e8f0f
View Raw JSON Data
{
  "trx_id": "eebe6ee7d212f2f925315aa347fc332bc89e8f0f",
  "block": 69112167,
  "trx_in_block": 3,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2022-11-03T10:47:12",
  "op": [
    "delegate_vesting_shares",
    {
      "delegator": "steem",
      "delegatee": "dev.central",
      "vesting_shares": "8761.184195 VESTS"
    }
  ]
}
steemdelegated 5.522 SP to @dev.central
2022/01/17 10:07:42
delegatorsteem
delegateedev.central
vesting shares8981.717426 VESTS
Transaction InfoBlock #60808425/Trx f2f26ec73e3d46765fda6c440be2b8ccc31c2d88
View Raw JSON Data
{
  "trx_id": "f2f26ec73e3d46765fda6c440be2b8ccc31c2d88",
  "block": 60808425,
  "trx_in_block": 14,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2022-01-17T10:07:42",
  "op": [
    "delegate_vesting_shares",
    {
      "delegator": "steem",
      "delegatee": "dev.central",
      "vesting_shares": "8981.717426 VESTS"
    }
  ]
}
steemdelegated 5.635 SP to @dev.central
2021/06/14 00:04:57
delegatorsteem
delegateedev.central
vesting shares9165.486084 VESTS
Transaction InfoBlock #54606854/Trx 7f38475bb44ebba2f01bfac577df304d51512afa
View Raw JSON Data
{
  "trx_id": "7f38475bb44ebba2f01bfac577df304d51512afa",
  "block": 54606854,
  "trx_in_block": 0,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2021-06-14T00:04:57",
  "op": [
    "delegate_vesting_shares",
    {
      "delegator": "steem",
      "delegatee": "dev.central",
      "vesting_shares": "9165.486084 VESTS"
    }
  ]
}
steemdelegated 5.751 SP to @dev.central
2020/12/11 10:25:09
delegatorsteem
delegateedev.central
vesting shares9352.908058 VESTS
Transaction InfoBlock #49354349/Trx 086721d29f06992dd8c429751118d89567cdd744
View Raw JSON Data
{
  "trx_id": "086721d29f06992dd8c429751118d89567cdd744",
  "block": 49354349,
  "trx_in_block": 2,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2020-12-11T10:25:09",
  "op": [
    "delegate_vesting_shares",
    {
      "delegator": "steem",
      "delegatee": "dev.central",
      "vesting_shares": "9352.908058 VESTS"
    }
  ]
}
steemdelegated 1.176 SP to @dev.central
2020/12/06 04:02:24
delegatorsteem
delegateedev.central
vesting shares1912.543513 VESTS
Transaction InfoBlock #49205911/Trx 9cb00029fec27a713c52ccfd31941f460aa3d225
View Raw JSON Data
{
  "trx_id": "9cb00029fec27a713c52ccfd31941f460aa3d225",
  "block": 49205911,
  "trx_in_block": 0,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2020-12-06T04:02:24",
  "op": [
    "delegate_vesting_shares",
    {
      "delegator": "steem",
      "delegatee": "dev.central",
      "vesting_shares": "1912.543513 VESTS"
    }
  ]
}
steemdelegated 5.754 SP to @dev.central
2020/12/05 11:59:24
delegatorsteem
delegateedev.central
vesting shares9359.274697 VESTS
Transaction InfoBlock #49187017/Trx 05ba8751e1577941d797f61738a9e43fb901d796
View Raw JSON Data
{
  "trx_id": "05ba8751e1577941d797f61738a9e43fb901d796",
  "block": 49187017,
  "trx_in_block": 5,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2020-12-05T11:59:24",
  "op": [
    "delegate_vesting_shares",
    {
      "delegator": "steem",
      "delegatee": "dev.central",
      "vesting_shares": "9359.274697 VESTS"
    }
  ]
}
steemdelegated 1.181 SP to @dev.central
2020/11/02 14:06:30
delegatorsteem
delegateedev.central
vesting shares1920.017158 VESTS
Transaction InfoBlock #48256001/Trx 1fb7134728e2c47829027c97ca603e2331b12be5
View Raw JSON Data
{
  "trx_id": "1fb7134728e2c47829027c97ca603e2331b12be5",
  "block": 48256001,
  "trx_in_block": 9,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2020-11-02T14:06:30",
  "op": [
    "delegate_vesting_shares",
    {
      "delegator": "steem",
      "delegatee": "dev.central",
      "vesting_shares": "1920.017158 VESTS"
    }
  ]
}
2020/05/20 06:32:39
parent authordev.central
parent permlinkcreating-a-discord-bot-with-python-part-1-creating-credentials-and-a-test-command
authorsteemitboard
permlinksteemitboard-notify-devcentral-20200317t162223000z
title
body![](https://i.imgur.com/1IisxxB.png)
json metadata{"image":["https://i.imgur.com/1IisxxB.png"]}
Transaction InfoBlock #43527556/Trx e23af371bf18804226b914b3b639e31952b7f7d5
View Raw JSON Data
{
  "trx_id": "e23af371bf18804226b914b3b639e31952b7f7d5",
  "block": 43527556,
  "trx_in_block": 9,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2020-05-20T06:32:39",
  "op": [
    "comment",
    {
      "parent_author": "dev.central",
      "parent_permlink": "creating-a-discord-bot-with-python-part-1-creating-credentials-and-a-test-command",
      "author": "steemitboard",
      "permlink": "steemitboard-notify-devcentral-20200317t162223000z",
      "title": "",
      "body": "![](https://i.imgur.com/1IisxxB.png)",
      "json_metadata": "{\"image\":[\"https://i.imgur.com/1IisxxB.png\"]}"
    }
  ]
}
steemdelegated 5.879 SP to @dev.central
2020/05/09 04:58:45
delegatorsteem
delegateedev.central
vesting shares9561.921271 VESTS
Transaction InfoBlock #43216148/Trx 18f25bef46b1576625694ea0a9426ee20115d06b
View Raw JSON Data
{
  "trx_id": "18f25bef46b1576625694ea0a9426ee20115d06b",
  "block": 43216148,
  "trx_in_block": 10,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2020-05-09T04:58:45",
  "op": [
    "delegate_vesting_shares",
    {
      "delegator": "steem",
      "delegatee": "dev.central",
      "vesting_shares": "9561.921271 VESTS"
    }
  ]
}
steemdelegated 1.201 SP to @dev.central
2020/05/08 08:28:09
delegatorsteem
delegateedev.central
vesting shares1953.311140 VESTS
Transaction InfoBlock #43192112/Trx 28a63e2b4449e2d5d8ea90df92770d13d1cc7640
View Raw JSON Data
{
  "trx_id": "28a63e2b4449e2d5d8ea90df92770d13d1cc7640",
  "block": 43192112,
  "trx_in_block": 0,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2020-05-08T08:28:09",
  "op": [
    "delegate_vesting_shares",
    {
      "delegator": "steem",
      "delegatee": "dev.central",
      "vesting_shares": "1953.311140 VESTS"
    }
  ]
}
2020/03/17 16:22:24
parent authordev.central
parent permlinkcreating-a-discord-bot-with-python-part-1-creating-credentials-and-a-test-command
authorsteemitboard
permlinksteemitboard-notify-devcentral-20200317t162223000z
title
bodyCongratulations @dev.central! You received a personal award! <table><tr><td>https://steemitimages.com/70x70/http://steemitboard.com/@dev.central/birthday2.png</td><td>Happy Steem Birthday! - You are on the Steem blockchain for 2 years!</td></tr></table> <sub>_You can view [your badges on your Steem Board](https://steemitboard.com/@dev.central) and compare to others on the [Steem Ranking](https://steemitboard.com/ranking/index.php?name=dev.central)_</sub> ###### [Vote for @Steemitboard as a witness](https://v2.steemconnect.com/sign/account-witness-vote?witness=steemitboard&approve=1) to get one more award and increased upvotes!
json metadata{"image":["https://steemitboard.com/img/notify.png"]}
Transaction InfoBlock #41735326/Trx 82f59575a4474798694dd1444d9f89e09044a202
View Raw JSON Data
{
  "trx_id": "82f59575a4474798694dd1444d9f89e09044a202",
  "block": 41735326,
  "trx_in_block": 3,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2020-03-17T16:22:24",
  "op": [
    "comment",
    {
      "parent_author": "dev.central",
      "parent_permlink": "creating-a-discord-bot-with-python-part-1-creating-credentials-and-a-test-command",
      "author": "steemitboard",
      "permlink": "steemitboard-notify-devcentral-20200317t162223000z",
      "title": "",
      "body": "Congratulations @dev.central! You received a personal award!\n\n<table><tr><td>https://steemitimages.com/70x70/http://steemitboard.com/@dev.central/birthday2.png</td><td>Happy Steem Birthday! - You are on the Steem blockchain for 2 years!</td></tr></table>\n\n<sub>_You can view [your badges on your Steem Board](https://steemitboard.com/@dev.central) and compare to others on the [Steem Ranking](https://steemitboard.com/ranking/index.php?name=dev.central)_</sub>\n\n\n###### [Vote for @Steemitboard as a witness](https://v2.steemconnect.com/sign/account-witness-vote?witness=steemitboard&approve=1) to get one more award and increased upvotes!",
      "json_metadata": "{\"image\":[\"https://steemitboard.com/img/notify.png\"]}"
    }
  ]
}
steemdelegated 5.992 SP to @dev.central
2019/06/25 08:08:15
delegatorsteem
delegateedev.central
vesting shares9745.132141 VESTS
Transaction InfoBlock #34103104/Trx d1024ec5b5ea531257ee28120e03fd1a570ac6ad
View Raw JSON Data
{
  "trx_id": "d1024ec5b5ea531257ee28120e03fd1a570ac6ad",
  "block": 34103104,
  "trx_in_block": 11,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2019-06-25T08:08:15",
  "op": [
    "delegate_vesting_shares",
    {
      "delegator": "steem",
      "delegatee": "dev.central",
      "vesting_shares": "9745.132141 VESTS"
    }
  ]
}
2019/03/17 16:49:48
parent authordev.central
parent permlinkcreating-a-discord-bot-with-python-part-1-creating-credentials-and-a-test-command
authorsteemitboard
permlinksteemitboard-notify-devcentral-20190317t164947000z
title
bodyCongratulations @dev.central! You received a personal award! <table><tr><td>https://steemitimages.com/70x70/http://steemitboard.com/@dev.central/birthday1.png</td><td>Happy Birthday! - You are on the Steem blockchain for 1 year!</td></tr></table> <sub>_You can view [your badges on your Steem Board](https://steemitboard.com/@dev.central) and compare to others on the [Steem Ranking](http://steemitboard.com/ranking/index.php?name=dev.central)_</sub> **Do not miss the last post from @steemitboard:** <table><tr><td><a href="https://steemit.com/drugwars/@steemitboard/drugwars-early-adopter"><img src="https://steemitimages.com/64x128/https://cdn.steemitimages.com/DQmYGN7R653u4hDFyq1hM7iuhr2bdAP1v2ApACDNtecJAZ5/image.png"></a></td><td><a href="https://steemit.com/drugwars/@steemitboard/drugwars-early-adopter">Are you a DrugWars early adopter? Benvenuto in famiglia!</a></td></tr></table> ###### [Vote for @Steemitboard as a witness](https://v2.steemconnect.com/sign/account-witness-vote?witness=steemitboard&approve=1) to get one more award and increased upvotes!
json metadata{"image":["https://steemitboard.com/img/notify.png"]}
Transaction InfoBlock #31237503/Trx eca1e63e048d7b67aabe4be3ab2a908d9a0d4b1d
View Raw JSON Data
{
  "trx_id": "eca1e63e048d7b67aabe4be3ab2a908d9a0d4b1d",
  "block": 31237503,
  "trx_in_block": 14,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2019-03-17T16:49:48",
  "op": [
    "comment",
    {
      "parent_author": "dev.central",
      "parent_permlink": "creating-a-discord-bot-with-python-part-1-creating-credentials-and-a-test-command",
      "author": "steemitboard",
      "permlink": "steemitboard-notify-devcentral-20190317t164947000z",
      "title": "",
      "body": "Congratulations @dev.central! You received a personal award!\n\n<table><tr><td>https://steemitimages.com/70x70/http://steemitboard.com/@dev.central/birthday1.png</td><td>Happy Birthday! - You are on the Steem blockchain for 1 year!</td></tr></table>\n\n<sub>_You can view [your badges on your Steem Board](https://steemitboard.com/@dev.central) and compare to others on the [Steem Ranking](http://steemitboard.com/ranking/index.php?name=dev.central)_</sub>\n\n\n**Do not miss the last post from @steemitboard:**\n<table><tr><td><a href=\"https://steemit.com/drugwars/@steemitboard/drugwars-early-adopter\"><img src=\"https://steemitimages.com/64x128/https://cdn.steemitimages.com/DQmYGN7R653u4hDFyq1hM7iuhr2bdAP1v2ApACDNtecJAZ5/image.png\"></a></td><td><a href=\"https://steemit.com/drugwars/@steemitboard/drugwars-early-adopter\">Are you a DrugWars early adopter? Benvenuto in famiglia!</a></td></tr></table>\n\n###### [Vote for @Steemitboard as a witness](https://v2.steemconnect.com/sign/account-witness-vote?witness=steemitboard&approve=1) to get one more award and increased upvotes!",
      "json_metadata": "{\"image\":[\"https://steemitboard.com/img/notify.png\"]}"
    }
  ]
}
steemdelegated 6.114 SP to @dev.central
2018/07/04 18:52:30
delegatorsteem
delegateedev.central
vesting shares9944.170382 VESTS
Transaction InfoBlock #23888209/Trx 28330d6b3d0b56d1ab8d5441a47de72e43a371e4
View Raw JSON Data
{
  "trx_id": "28330d6b3d0b56d1ab8d5441a47de72e43a371e4",
  "block": 23888209,
  "trx_in_block": 38,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-07-04T18:52:30",
  "op": [
    "delegate_vesting_shares",
    {
      "delegator": "steem",
      "delegatee": "dev.central",
      "vesting_shares": "9944.170382 VESTS"
    }
  ]
}
2018/04/10 00:33:03
authordev.central
permlinkcreating-a-discord-bot-with-python-part-1-creating-credentials-and-a-test-command
sbd payout0.030 SBD
steem payout0.003 STEEM
vesting payout42.813802 VESTS
Transaction InfoBlock #21430205/Virtual Operation #6
View Raw JSON Data
{
  "trx_id": "0000000000000000000000000000000000000000",
  "block": 21430205,
  "trx_in_block": 4294967295,
  "op_in_trx": 0,
  "virtual_op": 6,
  "timestamp": "2018-04-10T00:33:03",
  "op": [
    "author_reward",
    {
      "author": "dev.central",
      "permlink": "creating-a-discord-bot-with-python-part-1-creating-credentials-and-a-test-command",
      "sbd_payout": "0.030 SBD",
      "steem_payout": "0.003 STEEM",
      "vesting_payout": "42.813802 VESTS"
    }
  ]
}
utopian.payreceived 0.016 SP benefactor reward from @dev.central
2018/04/10 00:33:03
benefactorutopian.pay
authordev.central
permlinkcreating-a-discord-bot-with-python-part-1-creating-credentials-and-a-test-command
sbd payout0.000 SBD
steem payout0.000 STEEM
vesting payout26.503782 VESTS
Transaction InfoBlock #21430205/Virtual Operation #5
View Raw JSON Data
{
  "trx_id": "0000000000000000000000000000000000000000",
  "block": 21430205,
  "trx_in_block": 4294967295,
  "op_in_trx": 0,
  "virtual_op": 5,
  "timestamp": "2018-04-10T00:33:03",
  "op": [
    "comment_benefactor_reward",
    {
      "benefactor": "utopian.pay",
      "author": "dev.central",
      "permlink": "creating-a-discord-bot-with-python-part-1-creating-credentials-and-a-test-command",
      "sbd_payout": "0.000 SBD",
      "steem_payout": "0.000 STEEM",
      "vesting_payout": "26.503782 VESTS"
    }
  ]
}
2018/04/04 16:41:12
parent authordev.central
parent permlinkcreating-a-discord-bot-with-python-part-1-creating-credentials-and-a-test-command
authorscipio
permlinkre-devcentral-creating-a-discord-bot-with-python-part-1-creating-credentials-and-a-test-command-20180404t164111854z
title
bodyYour contribution cannot be approved because it does not follow the [Utopian Rules](https://utopian.io/rules). Explanation: - Discord itself is **not** open source, only the documentation of its API is. So if you for example would have added content the the API documentation itself, that could have qualified; - also, your content it too trivial / not explained well enough: you dropped in some code, but didn't really explain what the code does / is about. You can contact us on [Discord](https://discord.gg/uTyJkNm). **[[utopian-moderator]](https://utopian.io/moderators)**
json metadata{"tags":["utopian-io"],"community":"utopian","app":"utopian/1.0.0"}
Transaction InfoBlock #21276781/Trx f83b4cd4ee1aa9ec40254d118714515c0a9cb917
View Raw JSON Data
{
  "trx_id": "f83b4cd4ee1aa9ec40254d118714515c0a9cb917",
  "block": 21276781,
  "trx_in_block": 45,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-04-04T16:41:12",
  "op": [
    "comment",
    {
      "parent_author": "dev.central",
      "parent_permlink": "creating-a-discord-bot-with-python-part-1-creating-credentials-and-a-test-command",
      "author": "scipio",
      "permlink": "re-devcentral-creating-a-discord-bot-with-python-part-1-creating-credentials-and-a-test-command-20180404t164111854z",
      "title": "",
      "body": "Your contribution cannot be approved because it does not follow the [Utopian Rules](https://utopian.io/rules).\n\nExplanation:\n- Discord itself is **not** open source, only the documentation of its API is. So if you for example would have added content the the API documentation itself, that could have qualified;\n- also, your content it too trivial / not explained well enough: you dropped in some code, but didn't really explain what the code does / is about.\n\nYou can contact us on [Discord](https://discord.gg/uTyJkNm).\n**[[utopian-moderator]](https://utopian.io/moderators)**",
      "json_metadata": "{\"tags\":[\"utopian-io\"],\"community\":\"utopian\",\"app\":\"utopian/1.0.0\"}"
    }
  ]
}
2018/04/04 16:39:06
parent author
parent permlinkutopian-io
authordev.central
permlinkcreating-a-discord-bot-with-python-part-1-creating-credentials-and-a-test-command
titleCreating a Discord Bot with Python - Part 1: Creating credentials and a test command
body![image alt](http://i0.kym-cdn.com/photos/images/original/001/243/213/52a.png) ## Introduction #### What Will I Learn? In this tutorial, we will create a new Discord Bot Profile and retrieve its API key. Then we will add the bot to our server and create a first test command. This tutorial is needed for the tutorials following in this series. #### Requirements - A discord account. Create one [here](https://discordapp.com/register). - Python 3. Download it [here](https://www.python.org/downloads/). #### Difficulty - Beginner #### References All the files and scripts presented in this series are available on my GitHub Page [here](https://github.com/devcentral-utopian/discord-bot). The files needed for this tutorial are available in [this commit](https://github.com/devcentral-utopian/discord-bot/tree/f367bdcc531ccc2b87bf5cc34c6460d775124489) This tutorial is part of a series. I will explain in detail how I made this Discord bot. This is the first part, so look out for more! ## So, let's get started! #### 1. Creating the Discord App Head over to the [Discord "My Apps Page"](https://discordapp.com/developers/applications/me) and create a new app by clicking the "New App" Button. Give your new app a name. This name will be shown to other users. Optionally, you can add an app icon and a description for your app. And that's that. You should now see a message stating "Your sweet new application has been created successfully!". #### 2. Creating the Bot You now have created the app, but it has not been assigned a bot user yet. Head over to the configuration page of your app and under the category "Bot" click on "Create a Bot User". Confirm the dialog with "Yes, do it!". Congratulations, your bot is now created! #### 3. Test the credentials & API Get the bot username and token from the bot category of the settings page of your app. Do not confuse Client Secret and Bot Token! You do not need the Client Secret, but the token listed under the Bot category. Anyone with this token can access your bot, so be careful not to share it. Use pip (via the command line) to install the [discord.py]() API: `python -m pip install -U discord.py[voice]` Create a new file with the following contents and run it. ``` import discord client = discord.Client() token = "YOUR TOKEN HERE" @client.event async def on_ready(): print('Logged in as') print(client.user.name) print(client.user.id) print('------') client.run(token) ``` If you get an error at `import discord`, make sure the discord library was installed correctly. Re-run the command `python -m pip install -U discord.py[voice]` and leave the output in the comments. I will help you resolve your problem. If you get an error later in the code, you probably used the wrong token. Make sure you used the bot token and not the client secret. If you did use the correct token, please leave your error & stack trace in the comments. Make sure to blank out your token. #### 4. Adding the Bot a server We now will generate an OAuth link for our bot. Head to the Bot control panel and click "Generate OAuth2 URL". Leave the Redirect URI empty and leave the scope set to "Bot". For development, I recommend setting the permissions to Administrator, so that you won't have to deal with that. Click the box next to "Administrator" and then click "Copy". If you want to publish your bot, you should not require Administrator permissions. Only select the permissions your bot needs, like view channels, send messages and whatever else you might need. Once you have the link copied, paste it into your URL bar and open it. In the drop-down menu, select your development server and click "Authorize". You will now see the bot join your server, but he will be offline. In the next step, we will create our first command and let the bot come to life. #### 5. First command creation And now we begin the creation of the first function of our bot. For demonstration purposes, we will make a simple function wherein the bot replies "Hello, User" when a user sends "!test". First, we import the discord library: `import discord`. Then we create a variable which holds our token. When sharing your code, remember to replace this variable with something like `token = "token"`. We then create a new Client object. This object will be used to keep track of our bot: `client = discord.Client()`. We will listen to 2 events that the client class provides: `on_ready` and `on_message`. `on_ready` fires when the bot logged into discord, so we log that to the console: ``` @client.event async def on_ready(): print('Logged in as') print(client.user.name) print(client.user.id) print('------') ``` `client.user.name` provides the display name of the bot and `client.user.id` provides the id. `on_message` fires when a new message is sent to any discord server that the bot is in. We use this event to check if a command was executed. We can retrieve the message that was sent with `message.content` and the channel that it was sent in with `message.channel`. ``` async def on_message(message): if message.content == "!test": print("Received test command!") await client.send_message(message.channel, "Hello, " + message.author.name) ``` For now, we will use a simple if statement to check if the message has the content "!test". If it does, send a message to the channel that the message originated from with the message "Hello," and the display name of the user who sent the message. We also log in the console that the command was executed. At last, we have to start the bot with `client.run(token)`. [Here](https://github.com/devcentral-utopian/discord-bot/blob/f367bdcc531ccc2b87bf5cc34c6460d775124489/bot.py) is the final script. ``` import discord # Discord API Wrapper token = "YOUR TOKEN HERE" # Create new client client = discord.Client() # Log to console when the client is started @client.event async def on_ready(): print('Logged in as') print(client.user.name) print(client.user.id) print('------') # Fires every time a new message is received @client.event async def on_message(message): if message.content == "!test": print("Received test command!") await client.send_message(message.channel, "Hello, " + message.author.name) # Connect the client to Discord client.run(token) ``` Save this file and run it. You should see that the bot will now appear online on your server and the console should state that it logged in as the bot user. Now send "!test" in the discord server and the Discord Bot will reply with "Hello, " followed by your display name. If you have any problems with this script, please let me know in the comments and I will resolve your problem. ## Curriculum If you got this far without errors, that means you are ready to start creating a discord bot. Follow me to see the next tutorial as soon as possible, where we will create a command class to simplify the creation of commands. Thank you for reading my tutorial! I hope you liked it. If you have any recommendations for future tutorials please leave a comment. I'll upvote any constructive criticism! <br /><hr/><em>Posted on <a href="https://utopian.io/utopian-io/@dev.central/creating-a-discord-bot-with-python-part-1-creating-credentials-and-a-test-command">Utopian.io - Rewarding Open Source Contributors</a></em><hr/>
json metadata{"community":"utopian","app":"utopian/1.0.0","format":"markdown","repository":{"id":54995014,"name":"discord-api-docs","full_name":"discordapp/discord-api-docs","html_url":"https://github.com/discordapp/discord-api-docs","fork":false,"owner":{"login":"discordapp"}},"pullRequests":[],"platform":"github","type":"tutorials","tags":["utopian-io","python","discord","bot","api"],"users":["client.event"],"links":["http://i0.kym-cdn.com/photos/images/original/001/243/213/52a.png","https://discordapp.com/register","https://www.python.org/downloads/","https://github.com/devcentral-utopian/discord-bot","https://github.com/devcentral-utopian/discord-bot/tree/f367bdcc531ccc2b87bf5cc34c6460d775124489","https://discordapp.com/developers/applications/me","https://github.com/devcentral-utopian/discord-bot/blob/f367bdcc531ccc2b87bf5cc34c6460d775124489/bot.py"],"image":["http://i0.kym-cdn.com/photos/images/original/001/243/213/52a.png"],"moderator":{"account":"scipio","time":"2018-04-04T16:39:07.490Z","flagged":true,"reviewed":false,"pending":false},"questions":[],"score":null}
Transaction InfoBlock #21276739/Trx 27d82f2a4e6f4266688167ad772b0427fb67dacc
View Raw JSON Data
{
  "trx_id": "27d82f2a4e6f4266688167ad772b0427fb67dacc",
  "block": 21276739,
  "trx_in_block": 42,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-04-04T16:39:06",
  "op": [
    "comment",
    {
      "parent_author": "",
      "parent_permlink": "utopian-io",
      "author": "dev.central",
      "permlink": "creating-a-discord-bot-with-python-part-1-creating-credentials-and-a-test-command",
      "title": "Creating a Discord Bot with Python - Part 1: Creating credentials and a test command",
      "body": "![image alt](http://i0.kym-cdn.com/photos/images/original/001/243/213/52a.png)\n\n## Introduction\n\n#### What Will I Learn?\n\nIn this tutorial, we will create a new Discord Bot Profile and retrieve its API key. Then we will add the bot to our server and create a first test command. This tutorial is needed for the tutorials following in this series. \n\n#### Requirements\n\n- A discord account. Create one [here](https://discordapp.com/register).\n- Python 3. Download it [here](https://www.python.org/downloads/).\n\n\n#### Difficulty\n- Beginner\n\n\n#### References\nAll the files and scripts presented in this series are available on my GitHub Page [here](https://github.com/devcentral-utopian/discord-bot). The files needed for this tutorial are available in [this commit](https://github.com/devcentral-utopian/discord-bot/tree/f367bdcc531ccc2b87bf5cc34c6460d775124489)\nThis tutorial is part of a series. I will explain in detail how I made this Discord bot. This is the first part, so look out for more!\n\n## So, let's get started!\n\n#### 1. Creating the Discord App\nHead over to the [Discord \"My Apps Page\"](https://discordapp.com/developers/applications/me) and create a new app by clicking the \"New App\" Button. Give your new app a name. This name will be shown to other users. Optionally, you can add an app icon and a description for your app. And that's that. You should now see a message stating \"Your sweet new application has been created successfully!\". \n\n#### 2. Creating the Bot\nYou now have created the app, but it has not been assigned a bot user yet. Head over to the configuration page of your app and under the category \"Bot\" click on \"Create a Bot User\". Confirm the dialog with \"Yes, do it!\". Congratulations, your bot is now created!\n\n#### 3. Test the credentials & API\n\nGet the bot username and token from the bot category of the settings page of your app. Do not confuse Client Secret and Bot Token! You do not need the Client Secret, but the token listed under the Bot category. Anyone with this token can access your bot, so be careful not to share it.\n\nUse pip (via the command line) to install the [discord.py]() API: `python -m pip install -U discord.py[voice]`\n\nCreate a new file with the following contents and run it. \n```\nimport discord\n\nclient = discord.Client()\ntoken = \"YOUR TOKEN HERE\"\n\[email protected]\nasync def on_ready():\n    print('Logged in as')\n    print(client.user.name)\n    print(client.user.id)\n    print('------')\n\nclient.run(token)\n```\nIf you get an error at `import discord`, make sure the discord library was installed correctly. Re-run the command `python -m pip install -U discord.py[voice]` and leave the output in the comments. I will help you resolve your problem.\n\nIf you get an error later in the code, you probably used the wrong token. Make sure you used the bot token and not the client secret. If you did use the correct token, please leave your error & stack trace in the comments. Make sure to blank out your token.\n\n#### 4. Adding the Bot a server\nWe now will generate an OAuth link for our bot. Head to the Bot control panel and click \"Generate OAuth2 URL\". Leave the Redirect URI empty and leave the scope set to \"Bot\". For development, I recommend setting the permissions to Administrator, so that you won't have to deal with that. Click the box next to \"Administrator\" and then click \"Copy\". If you want to publish your bot, you should not require Administrator permissions. Only select the permissions your bot needs, like view channels, send messages and whatever else you might need. Once you have the link copied, paste it into your URL bar and open it. In the drop-down menu, select your development server and click \"Authorize\". You will now see the bot join your server, but he will be offline. In the next step, we will create our first command and let the bot come to life. \n\n#### 5. First command creation\nAnd now we begin the creation of the first function of our bot. For demonstration purposes, we will make a simple function wherein the bot replies \"Hello, User\" when a user sends \"!test\".\nFirst, we import the discord library: `import discord`. \nThen we create a variable which holds our token. When sharing your code, remember to replace this variable with something like `token = \"token\"`.\nWe then create a new Client object. This object will be used to keep track of our bot:\n`client = discord.Client()`.\nWe will listen to 2 events that the client class provides: `on_ready` and `on_message`. `on_ready` fires when the bot logged into discord, so we log that to the console: \n```\[email protected] \nasync def on_ready(): \n    print('Logged in as')\n    print(client.user.name) \n    print(client.user.id) \n    print('------') \n```\n`client.user.name` provides the display name of the bot and `client.user.id` provides the id. \n\n`on_message` fires when a new message is sent to any discord server that the bot is in.  We use this event to check if a command was executed. We can retrieve the message that was sent with `message.content` and the channel that it was sent in with `message.channel`. \n```\nasync def on_message(message): \n    if message.content == \"!test\": \n        print(\"Received test command!\") \n        await client.send_message(message.channel, \"Hello, \" + message.author.name)\n```\nFor now, we will use a simple if statement to check if the message has the content \"!test\". If it does, send a message to the channel that the message originated from with the message \"Hello,\"  and the display name of the user who sent the message. We also log in the console that the command was executed. \n\nAt last, we have to start the bot with `client.run(token)`. [Here](https://github.com/devcentral-utopian/discord-bot/blob/f367bdcc531ccc2b87bf5cc34c6460d775124489/bot.py) is the final script. \n\n```\nimport discord # Discord API Wrapper \n\n\ntoken = \"YOUR TOKEN HERE\" \n# Create new client \nclient = discord.Client() \n\n# Log to console when the client is started \[email protected] \nasync def on_ready(): \n    print('Logged in as')\n    print(client.user.name) \n    print(client.user.id) \n    print('------') \n\n\n# Fires every time a new message is received \[email protected] \nasync def on_message(message): \n    if message.content == \"!test\": \n        print(\"Received test command!\") \n        await client.send_message(message.channel, \"Hello, \" + message.author.name) \n        \n        \n# Connect the client to Discord \nclient.run(token)\n```  \n\nSave this file and run it. You should see that the bot will now appear online on your server and the console should state that it logged in as the bot user. Now send \"!test\" in the discord server and the Discord Bot will reply with \"Hello, \" followed by your display name. If you have any problems with this script, please let me know in the comments and I will resolve your problem. \n\n\n\n## Curriculum\n\n\nIf you got this far without errors, that means you are ready to start creating a discord bot. Follow me to see the next tutorial as soon as possible, where we will create a command class to simplify the creation of commands. \n\nThank you for reading my tutorial! I hope you liked it. If you have any recommendations for future tutorials please leave a comment. I'll upvote any constructive criticism!\n\n<br /><hr/><em>Posted on <a href=\"https://utopian.io/utopian-io/@dev.central/creating-a-discord-bot-with-python-part-1-creating-credentials-and-a-test-command\">Utopian.io -  Rewarding Open Source Contributors</a></em><hr/>",
      "json_metadata": "{\"community\":\"utopian\",\"app\":\"utopian/1.0.0\",\"format\":\"markdown\",\"repository\":{\"id\":54995014,\"name\":\"discord-api-docs\",\"full_name\":\"discordapp/discord-api-docs\",\"html_url\":\"https://github.com/discordapp/discord-api-docs\",\"fork\":false,\"owner\":{\"login\":\"discordapp\"}},\"pullRequests\":[],\"platform\":\"github\",\"type\":\"tutorials\",\"tags\":[\"utopian-io\",\"python\",\"discord\",\"bot\",\"api\"],\"users\":[\"client.event\"],\"links\":[\"http://i0.kym-cdn.com/photos/images/original/001/243/213/52a.png\",\"https://discordapp.com/register\",\"https://www.python.org/downloads/\",\"https://github.com/devcentral-utopian/discord-bot\",\"https://github.com/devcentral-utopian/discord-bot/tree/f367bdcc531ccc2b87bf5cc34c6460d775124489\",\"https://discordapp.com/developers/applications/me\",\"https://github.com/devcentral-utopian/discord-bot/blob/f367bdcc531ccc2b87bf5cc34c6460d775124489/bot.py\"],\"image\":[\"http://i0.kym-cdn.com/photos/images/original/001/243/213/52a.png\"],\"moderator\":{\"account\":\"scipio\",\"time\":\"2018-04-04T16:39:07.490Z\",\"flagged\":true,\"reviewed\":false,\"pending\":false},\"questions\":[],\"score\":null}"
    }
  ]
}
2018/04/03 07:08:06
votersjennon
authordev.central
permlinkcreating-a-discord-bot-with-python-part-1-creating-credentials-and-a-test-command
weight2000 (20.00%)
Transaction InfoBlock #21236527/Trx 7f0bbfe51145c3fb3bdb5fa71133fde9223bde4c
View Raw JSON Data
{
  "trx_id": "7f0bbfe51145c3fb3bdb5fa71133fde9223bde4c",
  "block": 21236527,
  "trx_in_block": 10,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-04-03T07:08:06",
  "op": [
    "vote",
    {
      "voter": "sjennon",
      "author": "dev.central",
      "permlink": "creating-a-discord-bot-with-python-part-1-creating-credentials-and-a-test-command",
      "weight": 2000
    }
  ]
}
2018/04/03 00:33:03
authordev.central
permlinkcreating-a-discord-bot-with-python-part-1-creating-credentials-and-a-test-command
max accepted payout1000000.000 SBD
percent steem dollars10000
allow votestrue
allow curation rewardstrue
extensions[[0,{"beneficiaries":[{"account":"utopian.pay","weight":2500}]}]]
Transaction InfoBlock #21228627/Trx f69fcc489ba9a27de02a9e838c7085c405bf6063
View Raw JSON Data
{
  "trx_id": "f69fcc489ba9a27de02a9e838c7085c405bf6063",
  "block": 21228627,
  "trx_in_block": 20,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-04-03T00:33:03",
  "op": [
    "comment_options",
    {
      "author": "dev.central",
      "permlink": "creating-a-discord-bot-with-python-part-1-creating-credentials-and-a-test-command",
      "max_accepted_payout": "1000000.000 SBD",
      "percent_steem_dollars": 10000,
      "allow_votes": true,
      "allow_curation_rewards": true,
      "extensions": [
        [
          0,
          {
            "beneficiaries": [
              {
                "account": "utopian.pay",
                "weight": 2500
              }
            ]
          }
        ]
      ]
    }
  ]
}
2018/04/03 00:33:03
parent author
parent permlinkutopian-io
authordev.central
permlinkcreating-a-discord-bot-with-python-part-1-creating-credentials-and-a-test-command
titleCreating a Discord Bot with Python - Part 1: Creating credentials and a test command
body![image alt](http://i0.kym-cdn.com/photos/images/original/001/243/213/52a.png) ## Introduction #### What Will I Learn? In this tutorial, we will create a new Discord Bot Profile and retrieve its API key. Then we will add the bot to our server and create a first test command. This tutorial is needed for the tutorials following in this series. #### Requirements - A discord account. Create one [here](https://discordapp.com/register). - Python 3. Download it [here](https://www.python.org/downloads/). #### Difficulty - Beginner #### References All the files and scripts presented in this series are available on my GitHub Page [here](https://github.com/devcentral-utopian/discord-bot). The files needed for this tutorial are available in [this commit](https://github.com/devcentral-utopian/discord-bot/tree/f367bdcc531ccc2b87bf5cc34c6460d775124489) This tutorial is part of a series. I will explain in detail how I made this Discord bot. This is the first part, so look out for more! ## So, let's get started! #### 1. Creating the Discord App Head over to the [Discord "My Apps Page"](https://discordapp.com/developers/applications/me) and create a new app by clicking the "New App" Button. Give your new app a name. This name will be shown to other users. Optionally, you can add an app icon and a description for your app. And that's that. You should now see a message stating "Your sweet new application has been created successfully!". #### 2. Creating the Bot You now have created the app, but it has not been assigned a bot user yet. Head over to the configuration page of your app and under the category "Bot" click on "Create a Bot User". Confirm the dialog with "Yes, do it!". Congratulations, your bot is now created! #### 3. Test the credentials & API Get the bot username and token from the bot category of the settings page of your app. Do not confuse Client Secret and Bot Token! You do not need the Client Secret, but the token listed under the Bot category. Anyone with this token can access your bot, so be careful not to share it. Use pip (via the command line) to install the [discord.py]() API: `python -m pip install -U discord.py[voice]` Create a new file with the following contents and run it. ``` import discord client = discord.Client() token = "YOUR TOKEN HERE" @client.event async def on_ready(): print('Logged in as') print(client.user.name) print(client.user.id) print('------') client.run(token) ``` If you get an error at `import discord`, make sure the discord library was installed correctly. Re-run the command `python -m pip install -U discord.py[voice]` and leave the output in the comments. I will help you resolve your problem. If you get an error later in the code, you probably used the wrong token. Make sure you used the bot token and not the client secret. If you did use the correct token, please leave your error & stack trace in the comments. Make sure to blank out your token. #### 4. Adding the Bot a server We now will generate an OAuth link for our bot. Head to the Bot control panel and click "Generate OAuth2 URL". Leave the Redirect URI empty and leave the scope set to "Bot". For development, I recommend setting the permissions to Administrator, so that you won't have to deal with that. Click the box next to "Administrator" and then click "Copy". If you want to publish your bot, you should not require Administrator permissions. Only select the permissions your bot needs, like view channels, send messages and whatever else you might need. Once you have the link copied, paste it into your URL bar and open it. In the drop-down menu, select your development server and click "Authorize". You will now see the bot join your server, but he will be offline. In the next step, we will create our first command and let the bot come to life. #### 5. First command creation And now we begin the creation of the first function of our bot. For demonstration purposes, we will make a simple function wherein the bot replies "Hello, User" when a user sends "!test". First, we import the discord library: `import discord`. Then we create a variable which holds our token. When sharing your code, remember to replace this variable with something like `token = "token"`. We then create a new Client object. This object will be used to keep track of our bot: `client = discord.Client()`. We will listen to 2 events that the client class provides: `on_ready` and `on_message`. `on_ready` fires when the bot logged into discord, so we log that to the console: ``` @client.event async def on_ready(): print('Logged in as') print(client.user.name) print(client.user.id) print('------') ``` `client.user.name` provides the display name of the bot and `client.user.id` provides the id. `on_message` fires when a new message is sent to any discord server that the bot is in. We use this event to check if a command was executed. We can retrieve the message that was sent with `message.content` and the channel that it was sent in with `message.channel`. ``` async def on_message(message): if message.content == "!test": print("Received test command!") await client.send_message(message.channel, "Hello, " + message.author.name) ``` For now, we will use a simple if statement to check if the message has the content "!test". If it does, send a message to the channel that the message originated from with the message "Hello," and the display name of the user who sent the message. We also log in the console that the command was executed. At last, we have to start the bot with `client.run(token)`. [Here](https://github.com/devcentral-utopian/discord-bot/blob/f367bdcc531ccc2b87bf5cc34c6460d775124489/bot.py) is the final script. ``` import discord # Discord API Wrapper token = "YOUR TOKEN HERE" # Create new client client = discord.Client() # Log to console when the client is started @client.event async def on_ready(): print('Logged in as') print(client.user.name) print(client.user.id) print('------') # Fires every time a new message is received @client.event async def on_message(message): if message.content == "!test": print("Received test command!") await client.send_message(message.channel, "Hello, " + message.author.name) # Connect the client to Discord client.run(token) ``` Save this file and run it. You should see that the bot will now appear online on your server and the console should state that it logged in as the bot user. Now send "!test" in the discord server and the Discord Bot will reply with "Hello, " followed by your display name. If you have any problems with this script, please let me know in the comments and I will resolve your problem. ## Curriculum If you got this far without errors, that means you are ready to start creating a discord bot. Follow me to see the next tutorial as soon as possible, where we will create a command class to simplify the creation of commands. Thank you for reading my tutorial! I hope you liked it. If you have any recommendations for future tutorials please leave a comment. I'll upvote any constructive criticism! <br /><hr/><em>Posted on <a href="https://utopian.io/utopian-io/@dev.central/creating-a-discord-bot-with-python-part-1-creating-credentials-and-a-test-command">Utopian.io - Rewarding Open Source Contributors</a></em><hr/>
json metadata{"community":"utopian","app":"utopian/1.0.0","format":"markdown","repository":{"id":54995014,"name":"discord-api-docs","full_name":"discordapp/discord-api-docs","html_url":"https://github.com/discordapp/discord-api-docs","fork":false,"owner":{"login":"discordapp"}},"pullRequests":[],"platform":"github","type":"tutorials","tags":["utopian-io","python","discord","bot","api"],"users":["client.event"],"links":["http://i0.kym-cdn.com/photos/images/original/001/243/213/52a.png","https://discordapp.com/register","https://www.python.org/downloads/","https://github.com/devcentral-utopian/discord-bot","https://github.com/devcentral-utopian/discord-bot/tree/f367bdcc531ccc2b87bf5cc34c6460d775124489","https://discordapp.com/developers/applications/me","https://github.com/devcentral-utopian/discord-bot/blob/f367bdcc531ccc2b87bf5cc34c6460d775124489/bot.py"],"image":["http://i0.kym-cdn.com/photos/images/original/001/243/213/52a.png"]}
Transaction InfoBlock #21228627/Trx f69fcc489ba9a27de02a9e838c7085c405bf6063
View Raw JSON Data
{
  "trx_id": "f69fcc489ba9a27de02a9e838c7085c405bf6063",
  "block": 21228627,
  "trx_in_block": 20,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-04-03T00:33:03",
  "op": [
    "comment",
    {
      "parent_author": "",
      "parent_permlink": "utopian-io",
      "author": "dev.central",
      "permlink": "creating-a-discord-bot-with-python-part-1-creating-credentials-and-a-test-command",
      "title": "Creating a Discord Bot with Python - Part 1: Creating credentials and a test command",
      "body": "![image alt](http://i0.kym-cdn.com/photos/images/original/001/243/213/52a.png)\n\n## Introduction\n\n#### What Will I Learn?\n\nIn this tutorial, we will create a new Discord Bot Profile and retrieve its API key. Then we will add the bot to our server and create a first test command. This tutorial is needed for the tutorials following in this series. \n\n#### Requirements\n\n- A discord account. Create one [here](https://discordapp.com/register).\n- Python 3. Download it [here](https://www.python.org/downloads/).\n\n\n#### Difficulty\n- Beginner\n\n\n#### References\nAll the files and scripts presented in this series are available on my GitHub Page [here](https://github.com/devcentral-utopian/discord-bot). The files needed for this tutorial are available in [this commit](https://github.com/devcentral-utopian/discord-bot/tree/f367bdcc531ccc2b87bf5cc34c6460d775124489)\nThis tutorial is part of a series. I will explain in detail how I made this Discord bot. This is the first part, so look out for more!\n\n## So, let's get started!\n\n#### 1. Creating the Discord App\nHead over to the [Discord \"My Apps Page\"](https://discordapp.com/developers/applications/me) and create a new app by clicking the \"New App\" Button. Give your new app a name. This name will be shown to other users. Optionally, you can add an app icon and a description for your app. And that's that. You should now see a message stating \"Your sweet new application has been created successfully!\". \n\n#### 2. Creating the Bot\nYou now have created the app, but it has not been assigned a bot user yet. Head over to the configuration page of your app and under the category \"Bot\" click on \"Create a Bot User\". Confirm the dialog with \"Yes, do it!\". Congratulations, your bot is now created!\n\n#### 3. Test the credentials & API\n\nGet the bot username and token from the bot category of the settings page of your app. Do not confuse Client Secret and Bot Token! You do not need the Client Secret, but the token listed under the Bot category. Anyone with this token can access your bot, so be careful not to share it.\n\nUse pip (via the command line) to install the [discord.py]() API: `python -m pip install -U discord.py[voice]`\n\nCreate a new file with the following contents and run it. \n```\nimport discord\n\nclient = discord.Client()\ntoken = \"YOUR TOKEN HERE\"\n\[email protected]\nasync def on_ready():\n    print('Logged in as')\n    print(client.user.name)\n    print(client.user.id)\n    print('------')\n\nclient.run(token)\n```\nIf you get an error at `import discord`, make sure the discord library was installed correctly. Re-run the command `python -m pip install -U discord.py[voice]` and leave the output in the comments. I will help you resolve your problem.\n\nIf you get an error later in the code, you probably used the wrong token. Make sure you used the bot token and not the client secret. If you did use the correct token, please leave your error & stack trace in the comments. Make sure to blank out your token.\n\n#### 4. Adding the Bot a server\nWe now will generate an OAuth link for our bot. Head to the Bot control panel and click \"Generate OAuth2 URL\". Leave the Redirect URI empty and leave the scope set to \"Bot\". For development, I recommend setting the permissions to Administrator, so that you won't have to deal with that. Click the box next to \"Administrator\" and then click \"Copy\". If you want to publish your bot, you should not require Administrator permissions. Only select the permissions your bot needs, like view channels, send messages and whatever else you might need. Once you have the link copied, paste it into your URL bar and open it. In the drop-down menu, select your development server and click \"Authorize\". You will now see the bot join your server, but he will be offline. In the next step, we will create our first command and let the bot come to life. \n\n#### 5. First command creation\nAnd now we begin the creation of the first function of our bot. For demonstration purposes, we will make a simple function wherein the bot replies \"Hello, User\" when a user sends \"!test\".\nFirst, we import the discord library: `import discord`. \nThen we create a variable which holds our token. When sharing your code, remember to replace this variable with something like `token = \"token\"`.\nWe then create a new Client object. This object will be used to keep track of our bot:\n`client = discord.Client()`.\nWe will listen to 2 events that the client class provides: `on_ready` and `on_message`. `on_ready` fires when the bot logged into discord, so we log that to the console: \n```\[email protected] \nasync def on_ready(): \n    print('Logged in as')\n    print(client.user.name) \n    print(client.user.id) \n    print('------') \n```\n`client.user.name` provides the display name of the bot and `client.user.id` provides the id. \n\n`on_message` fires when a new message is sent to any discord server that the bot is in.  We use this event to check if a command was executed. We can retrieve the message that was sent with `message.content` and the channel that it was sent in with `message.channel`. \n```\nasync def on_message(message): \n    if message.content == \"!test\": \n        print(\"Received test command!\") \n        await client.send_message(message.channel, \"Hello, \" + message.author.name)\n```\nFor now, we will use a simple if statement to check if the message has the content \"!test\". If it does, send a message to the channel that the message originated from with the message \"Hello,\"  and the display name of the user who sent the message. We also log in the console that the command was executed. \n\nAt last, we have to start the bot with `client.run(token)`. [Here](https://github.com/devcentral-utopian/discord-bot/blob/f367bdcc531ccc2b87bf5cc34c6460d775124489/bot.py) is the final script. \n\n```\nimport discord # Discord API Wrapper \n\n\ntoken = \"YOUR TOKEN HERE\" \n# Create new client \nclient = discord.Client() \n\n# Log to console when the client is started \[email protected] \nasync def on_ready(): \n    print('Logged in as')\n    print(client.user.name) \n    print(client.user.id) \n    print('------') \n\n\n# Fires every time a new message is received \[email protected] \nasync def on_message(message): \n    if message.content == \"!test\": \n        print(\"Received test command!\") \n        await client.send_message(message.channel, \"Hello, \" + message.author.name) \n        \n        \n# Connect the client to Discord \nclient.run(token)\n```  \n\nSave this file and run it. You should see that the bot will now appear online on your server and the console should state that it logged in as the bot user. Now send \"!test\" in the discord server and the Discord Bot will reply with \"Hello, \" followed by your display name. If you have any problems with this script, please let me know in the comments and I will resolve your problem. \n\n\n\n## Curriculum\n\n\nIf you got this far without errors, that means you are ready to start creating a discord bot. Follow me to see the next tutorial as soon as possible, where we will create a command class to simplify the creation of commands. \n\nThank you for reading my tutorial! I hope you liked it. If you have any recommendations for future tutorials please leave a comment. I'll upvote any constructive criticism!\n\n<br /><hr/><em>Posted on <a href=\"https://utopian.io/utopian-io/@dev.central/creating-a-discord-bot-with-python-part-1-creating-credentials-and-a-test-command\">Utopian.io -  Rewarding Open Source Contributors</a></em><hr/>",
      "json_metadata": "{\"community\":\"utopian\",\"app\":\"utopian/1.0.0\",\"format\":\"markdown\",\"repository\":{\"id\":54995014,\"name\":\"discord-api-docs\",\"full_name\":\"discordapp/discord-api-docs\",\"html_url\":\"https://github.com/discordapp/discord-api-docs\",\"fork\":false,\"owner\":{\"login\":\"discordapp\"}},\"pullRequests\":[],\"platform\":\"github\",\"type\":\"tutorials\",\"tags\":[\"utopian-io\",\"python\",\"discord\",\"bot\",\"api\"],\"users\":[\"client.event\"],\"links\":[\"http://i0.kym-cdn.com/photos/images/original/001/243/213/52a.png\",\"https://discordapp.com/register\",\"https://www.python.org/downloads/\",\"https://github.com/devcentral-utopian/discord-bot\",\"https://github.com/devcentral-utopian/discord-bot/tree/f367bdcc531ccc2b87bf5cc34c6460d775124489\",\"https://discordapp.com/developers/applications/me\",\"https://github.com/devcentral-utopian/discord-bot/blob/f367bdcc531ccc2b87bf5cc34c6460d775124489/bot.py\"],\"image\":[\"http://i0.kym-cdn.com/photos/images/original/001/243/213/52a.png\"]}"
    }
  ]
}
dev.centralupdated their account properties
2018/04/02 00:06:30
accountdev.central
memo keySTM4xSTiP354viAXpeaa6d1UGnmzB1ZM9A7xGbMdNXBRvXbg3ByVP
json metadata{"profile":{"profile_image":"https://i.imgur.com/VcUGpgr.png"}}
Transaction InfoBlock #21199301/Trx c7c84ff6dbb2496f651d4a52100b91d7ab5d018b
View Raw JSON Data
{
  "trx_id": "c7c84ff6dbb2496f651d4a52100b91d7ab5d018b",
  "block": 21199301,
  "trx_in_block": 40,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-04-02T00:06:30",
  "op": [
    "account_update",
    {
      "account": "dev.central",
      "memo_key": "STM4xSTiP354viAXpeaa6d1UGnmzB1ZM9A7xGbMdNXBRvXbg3ByVP",
      "json_metadata": "{\"profile\":{\"profile_image\":\"https://i.imgur.com/VcUGpgr.png\"}}"
    }
  ]
}
2018/04/01 23:49:27
required auths[]
required posting auths["dev.central"]
idfollow
json["follow",{"follower":"dev.central","following":"scipio","what":["blog"]}]
Transaction InfoBlock #21198960/Trx 7b71b3f47776b791c3aa88c314eeffa7feb3cee0
View Raw JSON Data
{
  "trx_id": "7b71b3f47776b791c3aa88c314eeffa7feb3cee0",
  "block": 21198960,
  "trx_in_block": 34,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-04-01T23:49:27",
  "op": [
    "custom_json",
    {
      "required_auths": [],
      "required_posting_auths": [
        "dev.central"
      ],
      "id": "follow",
      "json": "[\"follow\",{\"follower\":\"dev.central\",\"following\":\"scipio\",\"what\":[\"blog\"]}]"
    }
  ]
}
dev.centralupdated their account properties
2018/04/01 22:34:06
accountdev.central
posting{"weight_threshold":1,"account_auths":[["dtube.app",1],["utopian.app",1]],"key_auths":[["STM6brmktsruZTVEEJop1ZQxvgXPLxr9LeM2dtExBVev9x2ocDGT9",1]]}
memo keySTM4xSTiP354viAXpeaa6d1UGnmzB1ZM9A7xGbMdNXBRvXbg3ByVP
json metadata{}
Transaction InfoBlock #21197453/Trx 810e09ba0b988e99c030508abc525a43c2a9cae9
View Raw JSON Data
{
  "trx_id": "810e09ba0b988e99c030508abc525a43c2a9cae9",
  "block": 21197453,
  "trx_in_block": 9,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-04-01T22:34:06",
  "op": [
    "account_update",
    {
      "account": "dev.central",
      "posting": {
        "weight_threshold": 1,
        "account_auths": [
          [
            "dtube.app",
            1
          ],
          [
            "utopian.app",
            1
          ]
        ],
        "key_auths": [
          [
            "STM6brmktsruZTVEEJop1ZQxvgXPLxr9LeM2dtExBVev9x2ocDGT9",
            1
          ]
        ]
      },
      "memo_key": "STM4xSTiP354viAXpeaa6d1UGnmzB1ZM9A7xGbMdNXBRvXbg3ByVP",
      "json_metadata": "{}"
    }
  ]
}
2018/03/26 14:23:57
required auths[]
required posting auths["dev.central"]
idfollow
json["follow",{"follower":"dev.central","following":"sempervideo","what":[]}]
Transaction InfoBlock #21014905/Trx 4f5f509d20f1f67d0dbd2b82177936470680e867
View Raw JSON Data
{
  "trx_id": "4f5f509d20f1f67d0dbd2b82177936470680e867",
  "block": 21014905,
  "trx_in_block": 8,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-03-26T14:23:57",
  "op": [
    "custom_json",
    {
      "required_auths": [],
      "required_posting_auths": [
        "dev.central"
      ],
      "id": "follow",
      "json": "[\"follow\",{\"follower\":\"dev.central\",\"following\":\"sempervideo\",\"what\":[]}]"
    }
  ]
}
dev.centralupvoted (100.00%) @sempervideo / wpdnq5s4
2018/03/26 14:23:54
voterdev.central
authorsempervideo
permlinkwpdnq5s4
weight10000 (100.00%)
Transaction InfoBlock #21014904/Trx 904b228ea0b5df3bd0ba216ea4a23d9a402f5449
View Raw JSON Data
{
  "trx_id": "904b228ea0b5df3bd0ba216ea4a23d9a402f5449",
  "block": 21014904,
  "trx_in_block": 21,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-03-26T14:23:54",
  "op": [
    "vote",
    {
      "voter": "dev.central",
      "author": "sempervideo",
      "permlink": "wpdnq5s4",
      "weight": 10000
    }
  ]
}
2018/03/26 14:23:54
required auths[]
required posting auths["dev.central"]
idfollow
json["follow",{"follower":"dev.central","following":"sempervideo","what":["blog"]}]
Transaction InfoBlock #21014904/Trx 40f5086dc480aeb5dd6e997c2449a3ba855fcaed
View Raw JSON Data
{
  "trx_id": "40f5086dc480aeb5dd6e997c2449a3ba855fcaed",
  "block": 21014904,
  "trx_in_block": 5,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-03-26T14:23:54",
  "op": [
    "custom_json",
    {
      "required_auths": [],
      "required_posting_auths": [
        "dev.central"
      ],
      "id": "follow",
      "json": "[\"follow\",{\"follower\":\"dev.central\",\"following\":\"sempervideo\",\"what\":[\"blog\"]}]"
    }
  ]
}
leatherwolfupvoted (100.00%) @dev.central / yc7sm46h
2018/03/25 18:43:36
voterleatherwolf
authordev.central
permlinkyc7sm46h
weight10000 (100.00%)
Transaction InfoBlock #20991311/Trx 8640ad05f2c6ad9202433b754bcd268d25992089
View Raw JSON Data
{
  "trx_id": "8640ad05f2c6ad9202433b754bcd268d25992089",
  "block": 20991311,
  "trx_in_block": 18,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-03-25T18:43:36",
  "op": [
    "vote",
    {
      "voter": "leatherwolf",
      "author": "dev.central",
      "permlink": "yc7sm46h",
      "weight": 10000
    }
  ]
}
leatherwolfupvoted (100.00%) @dev.central / rnuuqt03
2018/03/25 18:43:18
voterleatherwolf
authordev.central
permlinkrnuuqt03
weight10000 (100.00%)
Transaction InfoBlock #20991305/Trx 94d3b2ca73837d8c91a1d7b344c79c399afedeb2
View Raw JSON Data
{
  "trx_id": "94d3b2ca73837d8c91a1d7b344c79c399afedeb2",
  "block": 20991305,
  "trx_in_block": 30,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-03-25T18:43:18",
  "op": [
    "vote",
    {
      "voter": "leatherwolf",
      "author": "dev.central",
      "permlink": "rnuuqt03",
      "weight": 10000
    }
  ]
}
dev.centralupvoted (100.00%) @dev.central / yc7sm46h
2018/03/25 18:36:33
voterdev.central
authordev.central
permlinkyc7sm46h
weight10000 (100.00%)
Transaction InfoBlock #20991170/Trx 53837ea657ecf2c0791a9f11576828a211e12f6f
View Raw JSON Data
{
  "trx_id": "53837ea657ecf2c0791a9f11576828a211e12f6f",
  "block": 20991170,
  "trx_in_block": 36,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-03-25T18:36:33",
  "op": [
    "vote",
    {
      "voter": "dev.central",
      "author": "dev.central",
      "permlink": "yc7sm46h",
      "weight": 10000
    }
  ]
}
dev.centralupvoted (100.00%) @dev.central / rnuuqt03
2018/03/25 18:36:15
voterdev.central
authordev.central
permlinkrnuuqt03
weight10000 (100.00%)
Transaction InfoBlock #20991164/Trx d4ce24679a5971bc9d7b8243b7252b649f416405
View Raw JSON Data
{
  "trx_id": "d4ce24679a5971bc9d7b8243b7252b649f416405",
  "block": 20991164,
  "trx_in_block": 0,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-03-25T18:36:15",
  "op": [
    "vote",
    {
      "voter": "dev.central",
      "author": "dev.central",
      "permlink": "rnuuqt03",
      "weight": 10000
    }
  ]
}
2018/03/25 18:35:36
parent authordev.central
parent permlinkrnuuqt03
authorm3voice
permlinkz9v066i11
titlez9v066i11
bodyHey, my name is M3, and I'm giving you an upvote, and a subscribe. Me and my community of followers are trying to kill YouTube, and make DTube bigger and better than any other video site. YouTube doesn't reward creators like they deserve, so we're all helping each other out. Anyway, keep going! What we're doing really is the way of the future.``
json metadata{"app":"dtube/0.7"}
Transaction InfoBlock #20991151/Trx 8c4e83511fbf887237ed6cab135bb8cec4f3498e
View Raw JSON Data
{
  "trx_id": "8c4e83511fbf887237ed6cab135bb8cec4f3498e",
  "block": 20991151,
  "trx_in_block": 0,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-03-25T18:35:36",
  "op": [
    "comment",
    {
      "parent_author": "dev.central",
      "parent_permlink": "rnuuqt03",
      "author": "m3voice",
      "permlink": "z9v066i11",
      "title": "z9v066i11",
      "body": "Hey, my name is M3, and I'm giving you an upvote, and a subscribe. Me and my community of followers are trying to kill YouTube, and make DTube bigger and better than any other video site. YouTube doesn't reward creators like they deserve, so we're all helping each other out. Anyway, keep going! What we're doing really is the way of the future.``",
      "json_metadata": "{\"app\":\"dtube/0.7\"}"
    }
  ]
}
dev.centralpublished a new post: yc7sm46h
2018/03/25 18:31:24
parent author
parent permlinkdefcon
authordev.central
permlinkyc7sm46h
titleDropping Docs on Darknets - How People Got Caught - DEF CON 22 - FULL TALK
body<center><a href='https://d.tube/#!/v/dev.central/yc7sm46h'><img src='https://ipfs.io/ipfs/QmXtYNiQ9HbdNn5K7tq5sJKtGeTVXW2M5j1L4D56vJQkK5'></a></center><hr> Don't want to watch the whole talk? Watch a summary here: [Link missing] In this talk from Def Con 22 (2014), Adrian Crenshaw talks about various cases of de-anonymization in the tor network. <hr><a href='https://d.tube/#!/v/dev.central/yc7sm46h'> ▶️ DTube</a><br /><a href='https://ipfs.io/ipfs/Qmc8HnDyW3BeSimHr6mb7n94VR7LdBvbojGTMUww2VkhVu'> ▶️ IPFS</a>
json metadata{"video":{"info":{"title":"Dropping Docs on Darknets - How People Got Caught - DEF CON 22 - FULL TALK","snaphash":"QmQo1SiwZhe1pdy1ZvKt6vZyJFi8Dn2zokh66cWkCL6Xgg","author":"dev.central","permlink":"yc7sm46h","duration":3058,"filesize":1862340031,"spritehash":"QmQo1SiwZhe1pdy1ZvKt6vZyJFi8Dn2zokh66cWkCL6Xgg"},"content":{"videohash":"Qmc8HnDyW3BeSimHr6mb7n94VR7LdBvbojGTMUww2VkhVu","description":"Don't want to watch the whole talk? Watch a summary here: https://d.tube/#!/v/dev.central/rnuuqt03\n\nIn this talk from Def Con 22 (2014), Adrian Crenshaw talks about various cases of de-anonymization in the tor network.","tags":["defcon","darknet","tor","privacy"],"video240hash":"QmV28rhNNYFyv5zqzRiX37s3X1XSVADoDaJRYQYsbXVCs6","video480hash":"QmW1RhZDnX2ZhzprbQRPd9Z2WUJh9NeVkitkhBWB1tXKfs","video720hash":"Qmc8HnDyW3BeSimHr6mb7n94VR7LdBvbojGTMUww2VkhVu"}},"tags":["defcon","darknet","tor","privacy","dtube"],"app":"dtube/0.7"}
Transaction InfoBlock #20991067/Trx 6e4f9a0774a8b58bbd0014d3f9f057c25d435922
View Raw JSON Data
{
  "trx_id": "6e4f9a0774a8b58bbd0014d3f9f057c25d435922",
  "block": 20991067,
  "trx_in_block": 86,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-03-25T18:31:24",
  "op": [
    "comment",
    {
      "parent_author": "",
      "parent_permlink": "defcon",
      "author": "dev.central",
      "permlink": "yc7sm46h",
      "title": "Dropping Docs on Darknets - How People Got Caught - DEF CON 22 - FULL TALK",
      "body": "<center><a href='https://d.tube/#!/v/dev.central/yc7sm46h'><img src='https://ipfs.io/ipfs/QmXtYNiQ9HbdNn5K7tq5sJKtGeTVXW2M5j1L4D56vJQkK5'></a></center><hr>\n\nDon't want to watch the whole talk? Watch a summary here: [Link missing]\n\nIn this talk from Def Con 22 (2014), Adrian Crenshaw talks about various cases of de-anonymization in the tor network.\n\n<hr><a href='https://d.tube/#!/v/dev.central/yc7sm46h'> ▶️ DTube</a><br /><a href='https://ipfs.io/ipfs/Qmc8HnDyW3BeSimHr6mb7n94VR7LdBvbojGTMUww2VkhVu'> ▶️ IPFS</a>",
      "json_metadata": "{\"video\":{\"info\":{\"title\":\"Dropping Docs on Darknets - How People Got Caught - DEF CON 22 - FULL TALK\",\"snaphash\":\"QmQo1SiwZhe1pdy1ZvKt6vZyJFi8Dn2zokh66cWkCL6Xgg\",\"author\":\"dev.central\",\"permlink\":\"yc7sm46h\",\"duration\":3058,\"filesize\":1862340031,\"spritehash\":\"QmQo1SiwZhe1pdy1ZvKt6vZyJFi8Dn2zokh66cWkCL6Xgg\"},\"content\":{\"videohash\":\"Qmc8HnDyW3BeSimHr6mb7n94VR7LdBvbojGTMUww2VkhVu\",\"description\":\"Don't want to watch the whole talk? Watch a summary here: https://d.tube/#!/v/dev.central/rnuuqt03\\n\\nIn this talk from Def Con 22 (2014), Adrian Crenshaw talks about various cases of de-anonymization in the tor network.\",\"tags\":[\"defcon\",\"darknet\",\"tor\",\"privacy\"],\"video240hash\":\"QmV28rhNNYFyv5zqzRiX37s3X1XSVADoDaJRYQYsbXVCs6\",\"video480hash\":\"QmW1RhZDnX2ZhzprbQRPd9Z2WUJh9NeVkitkhBWB1tXKfs\",\"video720hash\":\"Qmc8HnDyW3BeSimHr6mb7n94VR7LdBvbojGTMUww2VkhVu\"}},\"tags\":[\"defcon\",\"darknet\",\"tor\",\"privacy\",\"dtube\"],\"app\":\"dtube/0.7\"}"
    }
  ]
}
dev.centralupdated options for rnuuqt03
2018/03/25 18:30:42
authordev.central
permlinkrnuuqt03
max accepted payout1000000.000 SBD
percent steem dollars10000
allow votestrue
allow curation rewardstrue
extensions[[0,{"beneficiaries":[{"account":"dtube","weight":2500}]}]]
Transaction InfoBlock #20991053/Trx 212ed70530c91bca45ea4401e62f42e44ab985f0
View Raw JSON Data
{
  "trx_id": "212ed70530c91bca45ea4401e62f42e44ab985f0",
  "block": 20991053,
  "trx_in_block": 50,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-03-25T18:30:42",
  "op": [
    "comment_options",
    {
      "author": "dev.central",
      "permlink": "rnuuqt03",
      "max_accepted_payout": "1000000.000 SBD",
      "percent_steem_dollars": 10000,
      "allow_votes": true,
      "allow_curation_rewards": true,
      "extensions": [
        [
          0,
          {
            "beneficiaries": [
              {
                "account": "dtube",
                "weight": 2500
              }
            ]
          }
        ]
      ]
    }
  ]
}
dev.centralpublished a new post: rnuuqt03
2018/03/25 18:30:42
parent author
parent permlinkdefcon
authordev.central
permlinkrnuuqt03
titleDropping Docs on Darknets - How People Got Caught - DEF CON 22 - SUMMARY
body<center><a href='https://d.tube/#!/v/dev.central/rnuuqt03'><img src='https://ipfs.io/ipfs/undefined'></a></center><hr> Watch the full talk here: https://d.tube/#!/v/dev.central/yc7sm46h In this talk from Def Con 22 (2014), Adrian Crenshaw talks about various cases of de-anonymization in the tor network. <hr><a href='https://d.tube/#!/v/dev.central/rnuuqt03'> ▶️ DTube</a><br /><a href='https://ipfs.io/ipfs/QmdBskJwnwrZYBy5CwzLQxyCurBbAnhkjVHgyTnWNuwhJA'> ▶️ IPFS</a>
json metadata{"video":{"info":{"title":"Dropping Docs on Darknets - How People Got Caught - DEF CON 22 - SUMMARY","snaphash":"QmQq7uHuz2TxHQ2jjoSAfFGecNSnBDFTseskj845hq92ty","author":"dev.central","permlink":"rnuuqt03","duration":868,"filesize":545069599,"spritehash":"QmQq7uHuz2TxHQ2jjoSAfFGecNSnBDFTseskj845hq92ty"},"content":{"videohash":"QmdBskJwnwrZYBy5CwzLQxyCurBbAnhkjVHgyTnWNuwhJA","description":" Watch the full talk here: https://d.tube/#!/v/dev.central/yc7sm46h\n\nIn this talk from Def Con 22 (2014), Adrian Crenshaw talks about various cases of de-anonymization in the tor network.","tags":["defcon","darknet","privacy","tor"],"video240hash":"QmbNmk6PmAi1FytMcGkkDPRexNKDz5XNyRsoU9pg1zqi1U","video480hash":"QmQZRoqyy5QfjP1qanMkkqy6q8F9E3LqSokiUqDkwqnTCt","video720hash":"QmdBskJwnwrZYBy5CwzLQxyCurBbAnhkjVHgyTnWNuwhJA"}},"tags":["defcon","darknet","privacy","tor","dtube"],"app":"dtube/0.7"}
Transaction InfoBlock #20991053/Trx 212ed70530c91bca45ea4401e62f42e44ab985f0
View Raw JSON Data
{
  "trx_id": "212ed70530c91bca45ea4401e62f42e44ab985f0",
  "block": 20991053,
  "trx_in_block": 50,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-03-25T18:30:42",
  "op": [
    "comment",
    {
      "parent_author": "",
      "parent_permlink": "defcon",
      "author": "dev.central",
      "permlink": "rnuuqt03",
      "title": "Dropping Docs on Darknets - How People Got Caught - DEF CON 22 - SUMMARY",
      "body": "<center><a href='https://d.tube/#!/v/dev.central/rnuuqt03'><img src='https://ipfs.io/ipfs/undefined'></a></center><hr>\n\n Watch the full talk here: https://d.tube/#!/v/dev.central/yc7sm46h\n\nIn this talk from Def Con 22 (2014), Adrian Crenshaw talks about various cases of de-anonymization in the tor network.\n\n<hr><a href='https://d.tube/#!/v/dev.central/rnuuqt03'> ▶️ DTube</a><br /><a href='https://ipfs.io/ipfs/QmdBskJwnwrZYBy5CwzLQxyCurBbAnhkjVHgyTnWNuwhJA'> ▶️ IPFS</a>",
      "json_metadata": "{\"video\":{\"info\":{\"title\":\"Dropping Docs on Darknets - How People Got Caught - DEF CON 22 - SUMMARY\",\"snaphash\":\"QmQq7uHuz2TxHQ2jjoSAfFGecNSnBDFTseskj845hq92ty\",\"author\":\"dev.central\",\"permlink\":\"rnuuqt03\",\"duration\":868,\"filesize\":545069599,\"spritehash\":\"QmQq7uHuz2TxHQ2jjoSAfFGecNSnBDFTseskj845hq92ty\"},\"content\":{\"videohash\":\"QmdBskJwnwrZYBy5CwzLQxyCurBbAnhkjVHgyTnWNuwhJA\",\"description\":\" Watch the full talk here: https://d.tube/#!/v/dev.central/yc7sm46h\\n\\nIn this talk from Def Con 22 (2014), Adrian Crenshaw talks about various cases of de-anonymization in the tor network.\",\"tags\":[\"defcon\",\"darknet\",\"privacy\",\"tor\"],\"video240hash\":\"QmbNmk6PmAi1FytMcGkkDPRexNKDz5XNyRsoU9pg1zqi1U\",\"video480hash\":\"QmQZRoqyy5QfjP1qanMkkqy6q8F9E3LqSokiUqDkwqnTCt\",\"video720hash\":\"QmdBskJwnwrZYBy5CwzLQxyCurBbAnhkjVHgyTnWNuwhJA\"}},\"tags\":[\"defcon\",\"darknet\",\"privacy\",\"tor\",\"dtube\"],\"app\":\"dtube/0.7\"}"
    }
  ]
}
2018/03/25 18:21:18
required auths[]
required posting auths["dev.central"]
idfollow
json["follow",{"follower":"dev.central","following":"leatherwolf","what":[]}]
Transaction InfoBlock #20990865/Trx c2886df4cea87aa7862304866c9b016b166f11cb
View Raw JSON Data
{
  "trx_id": "c2886df4cea87aa7862304866c9b016b166f11cb",
  "block": 20990865,
  "trx_in_block": 0,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-03-25T18:21:18",
  "op": [
    "custom_json",
    {
      "required_auths": [],
      "required_posting_auths": [
        "dev.central"
      ],
      "id": "follow",
      "json": "[\"follow\",{\"follower\":\"dev.central\",\"following\":\"leatherwolf\",\"what\":[]}]"
    }
  ]
}
2018/03/25 18:21:15
required auths[]
required posting auths["dev.central"]
idfollow
json["follow",{"follower":"dev.central","following":"leatherwolf","what":["blog"]}]
Transaction InfoBlock #20990864/Trx c730e32f7e8579d0e686390786778e082a21bd0c
View Raw JSON Data
{
  "trx_id": "c730e32f7e8579d0e686390786778e082a21bd0c",
  "block": 20990864,
  "trx_in_block": 22,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-03-25T18:21:15",
  "op": [
    "custom_json",
    {
      "required_auths": [],
      "required_posting_auths": [
        "dev.central"
      ],
      "id": "follow",
      "json": "[\"follow\",{\"follower\":\"dev.central\",\"following\":\"leatherwolf\",\"what\":[\"blog\"]}]"
    }
  ]
}
dev.centralupdated options for yc7sm46h
2018/03/25 18:16:36
authordev.central
permlinkyc7sm46h
max accepted payout1000000.000 SBD
percent steem dollars10000
allow votestrue
allow curation rewardstrue
extensions[[0,{"beneficiaries":[{"account":"dtube","weight":2500}]}]]
Transaction InfoBlock #20990772/Trx cb3cc51ce1debabdd356881fb448564c1e614b0b
View Raw JSON Data
{
  "trx_id": "cb3cc51ce1debabdd356881fb448564c1e614b0b",
  "block": 20990772,
  "trx_in_block": 7,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-03-25T18:16:36",
  "op": [
    "comment_options",
    {
      "author": "dev.central",
      "permlink": "yc7sm46h",
      "max_accepted_payout": "1000000.000 SBD",
      "percent_steem_dollars": 10000,
      "allow_votes": true,
      "allow_curation_rewards": true,
      "extensions": [
        [
          0,
          {
            "beneficiaries": [
              {
                "account": "dtube",
                "weight": 2500
              }
            ]
          }
        ]
      ]
    }
  ]
}
dev.centralpublished a new post: yc7sm46h
2018/03/25 18:16:36
parent author
parent permlinkdefcon
authordev.central
permlinkyc7sm46h
titleDropping Docs on Darknets - How People Got Caught - DEF CON 22 - FULL TALK
body<center><a href='https://d.tube/#!/v/dev.central/yc7sm46h'><img src='https://ipfs.io/ipfs/QmXtYNiQ9HbdNn5K7tq5sJKtGeTVXW2M5j1L4D56vJQkK5'></a></center><hr> Don't want to watch the whole talk? Watch a summary here: [Link missing] In this talk from Def Con 22 (2014), Adrian Crenshaw talks about various cases of de-anonymization in the tor network. <hr><a href='https://d.tube/#!/v/dev.central/yc7sm46h'> ▶️ DTube</a><br /><a href='https://ipfs.io/ipfs/Qmc8HnDyW3BeSimHr6mb7n94VR7LdBvbojGTMUww2VkhVu'> ▶️ IPFS</a>
json metadata{"video":{"info":{"title":"Dropping Docs on Darknets - How People Got Caught - DEF CON 22 - FULL TALK","snaphash":"QmQo1SiwZhe1pdy1ZvKt6vZyJFi8Dn2zokh66cWkCL6Xgg","author":"dev.central","permlink":"yc7sm46h","duration":3058,"filesize":1862340031,"spritehash":"QmQo1SiwZhe1pdy1ZvKt6vZyJFi8Dn2zokh66cWkCL6Xgg"},"content":{"videohash":"Qmc8HnDyW3BeSimHr6mb7n94VR7LdBvbojGTMUww2VkhVu","description":"Don't want to watch the whole talk? Watch a summary here: [Link missing]\n\nIn this talk from Def Con 22 (2014), Adrian Crenshaw talks about various cases of de-anonymization in the tor network.","tags":["defcon","darknet","tor","privacy"],"video240hash":"QmV28rhNNYFyv5zqzRiX37s3X1XSVADoDaJRYQYsbXVCs6","video480hash":"QmW1RhZDnX2ZhzprbQRPd9Z2WUJh9NeVkitkhBWB1tXKfs","video720hash":"Qmc8HnDyW3BeSimHr6mb7n94VR7LdBvbojGTMUww2VkhVu"}},"tags":["defcon","darknet","tor","privacy","dtube"],"app":"dtube/0.7"}
Transaction InfoBlock #20990772/Trx cb3cc51ce1debabdd356881fb448564c1e614b0b
View Raw JSON Data
{
  "trx_id": "cb3cc51ce1debabdd356881fb448564c1e614b0b",
  "block": 20990772,
  "trx_in_block": 7,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-03-25T18:16:36",
  "op": [
    "comment",
    {
      "parent_author": "",
      "parent_permlink": "defcon",
      "author": "dev.central",
      "permlink": "yc7sm46h",
      "title": "Dropping Docs on Darknets - How People Got Caught - DEF CON 22 - FULL TALK",
      "body": "<center><a href='https://d.tube/#!/v/dev.central/yc7sm46h'><img src='https://ipfs.io/ipfs/QmXtYNiQ9HbdNn5K7tq5sJKtGeTVXW2M5j1L4D56vJQkK5'></a></center><hr>\n\nDon't want to watch the whole talk? Watch a summary here: [Link missing]\n\nIn this talk from Def Con 22 (2014), Adrian Crenshaw talks about various cases of de-anonymization in the tor network.\n\n<hr><a href='https://d.tube/#!/v/dev.central/yc7sm46h'> ▶️ DTube</a><br /><a href='https://ipfs.io/ipfs/Qmc8HnDyW3BeSimHr6mb7n94VR7LdBvbojGTMUww2VkhVu'> ▶️ IPFS</a>",
      "json_metadata": "{\"video\":{\"info\":{\"title\":\"Dropping Docs on Darknets - How People Got Caught - DEF CON 22 - FULL TALK\",\"snaphash\":\"QmQo1SiwZhe1pdy1ZvKt6vZyJFi8Dn2zokh66cWkCL6Xgg\",\"author\":\"dev.central\",\"permlink\":\"yc7sm46h\",\"duration\":3058,\"filesize\":1862340031,\"spritehash\":\"QmQo1SiwZhe1pdy1ZvKt6vZyJFi8Dn2zokh66cWkCL6Xgg\"},\"content\":{\"videohash\":\"Qmc8HnDyW3BeSimHr6mb7n94VR7LdBvbojGTMUww2VkhVu\",\"description\":\"Don't want to watch the whole talk? Watch a summary here: [Link missing]\\n\\nIn this talk from Def Con 22 (2014), Adrian Crenshaw talks about various cases of de-anonymization in the tor network.\",\"tags\":[\"defcon\",\"darknet\",\"tor\",\"privacy\"],\"video240hash\":\"QmV28rhNNYFyv5zqzRiX37s3X1XSVADoDaJRYQYsbXVCs6\",\"video480hash\":\"QmW1RhZDnX2ZhzprbQRPd9Z2WUJh9NeVkitkhBWB1tXKfs\",\"video720hash\":\"Qmc8HnDyW3BeSimHr6mb7n94VR7LdBvbojGTMUww2VkhVu\"}},\"tags\":[\"defcon\",\"darknet\",\"tor\",\"privacy\",\"dtube\"],\"app\":\"dtube/0.7\"}"
    }
  ]
}
dev.centralupdated their account properties
2018/03/25 17:44:33
accountdev.central
posting{"weight_threshold":1,"account_auths":[["dtube.app",1]],"key_auths":[["STM6brmktsruZTVEEJop1ZQxvgXPLxr9LeM2dtExBVev9x2ocDGT9",1]]}
memo keySTM4xSTiP354viAXpeaa6d1UGnmzB1ZM9A7xGbMdNXBRvXbg3ByVP
json metadata{}
Transaction InfoBlock #20990131/Trx 48573b64d636ccc70c62fb15c2710604651778dd
View Raw JSON Data
{
  "trx_id": "48573b64d636ccc70c62fb15c2710604651778dd",
  "block": 20990131,
  "trx_in_block": 19,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-03-25T17:44:33",
  "op": [
    "account_update",
    {
      "account": "dev.central",
      "posting": {
        "weight_threshold": 1,
        "account_auths": [
          [
            "dtube.app",
            1
          ]
        ],
        "key_auths": [
          [
            "STM6brmktsruZTVEEJop1ZQxvgXPLxr9LeM2dtExBVev9x2ocDGT9",
            1
          ]
        ]
      },
      "memo_key": "STM4xSTiP354viAXpeaa6d1UGnmzB1ZM9A7xGbMdNXBRvXbg3ByVP",
      "json_metadata": "{}"
    }
  ]
}
steemdelegated 18.700 SP to @dev.central
2018/03/17 17:50:24
delegatorsteem
delegateedev.central
vesting shares30414.498839 VESTS
Transaction InfoBlock #20760704/Trx ffdf7a78ad2fe33bbecd4637014ecd08ff046499
View Raw JSON Data
{
  "trx_id": "ffdf7a78ad2fe33bbecd4637014ecd08ff046499",
  "block": 20760704,
  "trx_in_block": 11,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-03-17T17:50:24",
  "op": [
    "delegate_vesting_shares",
    {
      "delegator": "steem",
      "delegatee": "dev.central",
      "vesting_shares": "30414.498839 VESTS"
    }
  ]
}
steemcreated a new account: @dev.central
2018/03/17 15:56:24
fee0.100 STEEM
delegation30690.000000 VESTS
creatorsteem
new account namedev.central
owner{"weight_threshold":1,"account_auths":[],"key_auths":[["STM8CjoNL4TXFth46dYp1MvvQ3ZMuZdV6Bsv8P9QMbtEmTbeA73n6",1]]}
active{"weight_threshold":1,"account_auths":[],"key_auths":[["STM8MbsqRtge6hPLY34DnhYJpSJpJRtVGajLdtGpGBGzhX7TEkjZd",1]]}
posting{"weight_threshold":1,"account_auths":[],"key_auths":[["STM6brmktsruZTVEEJop1ZQxvgXPLxr9LeM2dtExBVev9x2ocDGT9",1]]}
memo keySTM4xSTiP354viAXpeaa6d1UGnmzB1ZM9A7xGbMdNXBRvXbg3ByVP
json metadata{}
extensions[]
Transaction InfoBlock #20758425/Trx 43442580cfd66b6b026f041f50e84a5fa5f886ff
View Raw JSON Data
{
  "trx_id": "43442580cfd66b6b026f041f50e84a5fa5f886ff",
  "block": 20758425,
  "trx_in_block": 11,
  "op_in_trx": 0,
  "virtual_op": 0,
  "timestamp": "2018-03-17T15:56:24",
  "op": [
    "account_create_with_delegation",
    {
      "fee": "0.100 STEEM",
      "delegation": "30690.000000 VESTS",
      "creator": "steem",
      "new_account_name": "dev.central",
      "owner": {
        "weight_threshold": 1,
        "account_auths": [],
        "key_auths": [
          [
            "STM8CjoNL4TXFth46dYp1MvvQ3ZMuZdV6Bsv8P9QMbtEmTbeA73n6",
            1
          ]
        ]
      },
      "active": {
        "weight_threshold": 1,
        "account_auths": [],
        "key_auths": [
          [
            "STM8MbsqRtge6hPLY34DnhYJpSJpJRtVGajLdtGpGBGzhX7TEkjZd",
            1
          ]
        ]
      },
      "posting": {
        "weight_threshold": 1,
        "account_auths": [],
        "key_auths": [
          [
            "STM6brmktsruZTVEEJop1ZQxvgXPLxr9LeM2dtExBVev9x2ocDGT9",
            1
          ]
        ]
      },
      "memo_key": "STM4xSTiP354viAXpeaa6d1UGnmzB1ZM9A7xGbMdNXBRvXbg3ByVP",
      "json_metadata": "{}",
      "extensions": []
    }
  ]
}

Account Metadata

POSTING JSON METADATA
profile{"profile_image":"https://i.imgur.com/VcUGpgr.png"}
JSON METADATA
profile{"profile_image":"https://i.imgur.com/VcUGpgr.png"}
{
  "posting_json_metadata": {
    "profile": {
      "profile_image": "https://i.imgur.com/VcUGpgr.png"
    }
  },
  "json_metadata": {
    "profile": {
      "profile_image": "https://i.imgur.com/VcUGpgr.png"
    }
  }
}

Auth Keys

Owner
Single Signature
Public Keys
STM8CjoNL4TXFth46dYp1MvvQ3ZMuZdV6Bsv8P9QMbtEmTbeA73n61/1
Active
Single Signature
Public Keys
STM8MbsqRtge6hPLY34DnhYJpSJpJRtVGajLdtGpGBGzhX7TEkjZd1/1
Posting
Single Signature
Public Keys
STM6brmktsruZTVEEJop1ZQxvgXPLxr9LeM2dtExBVev9x2ocDGT91/1
App Permissions
Memo
STM4xSTiP354viAXpeaa6d1UGnmzB1ZM9A7xGbMdNXBRvXbg3ByVP
{
  "owner": {
    "account_auths": [],
    "key_auths": [
      [
        "STM8CjoNL4TXFth46dYp1MvvQ3ZMuZdV6Bsv8P9QMbtEmTbeA73n6",
        1
      ]
    ],
    "weight_threshold": 1
  },
  "active": {
    "account_auths": [],
    "key_auths": [
      [
        "STM8MbsqRtge6hPLY34DnhYJpSJpJRtVGajLdtGpGBGzhX7TEkjZd",
        1
      ]
    ],
    "weight_threshold": 1
  },
  "posting": {
    "account_auths": [
      [
        "dtube.app",
        1
      ],
      [
        "utopian.app",
        1
      ]
    ],
    "key_auths": [
      [
        "STM6brmktsruZTVEEJop1ZQxvgXPLxr9LeM2dtExBVev9x2ocDGT9",
        1
      ]
    ],
    "weight_threshold": 1
  },
  "memo": "STM4xSTiP354viAXpeaa6d1UGnmzB1ZM9A7xGbMdNXBRvXbg3ByVP"
}

Witness Votes

0 / 30
No active witness votes.
[]