Advertisement
Guest User

Untitled

a guest
Jan 23rd, 2020
132
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.19 KB | None | 0 0
  1. import discord
  2. import json
  3. from discord.ext import commands
  4.  
  5. MY_TOKEN = "NjY5OTQ4NDA5NTYxNjEyMzIw.XinQLQ.TdWWdbjU63-F0UuhXSQ89rp2Vuc"
  6. SERVER_ID_FAM = "553655332434608148"
  7.  
  8. def get_guild_members(server_name):
  9. server = ''
  10. for guild in bot.guilds:
  11. if guild.name == server_name:
  12. server = guild
  13. return server.members
  14.  
  15. def dump_json(data):
  16. with open('data.json', 'w') as outfile:
  17. json.dump(data, outfile)
  18. outfile.close()
  19.  
  20. def open_json():
  21. data = {}
  22. with open('data.json') as json_file:
  23. data = json.load(json_file)
  24. json_file.close()
  25. return data
  26.  
  27. def reset_json():
  28. data = {}
  29. data['members'] = []
  30. data['voted_members'] = []
  31. dump_json(data)
  32.  
  33.  
  34. def write_member_to_json(member, voted):
  35. data = open_json()
  36. if voted:
  37. data['voted_members'].append({
  38. 'id' : member.id,
  39. 'guild_id' : member.guild.id,
  40. 'display_name' : member.display_name,
  41. 'votes' : 1
  42. })
  43. else:
  44. data['members'].append({
  45. 'id' : member.id,
  46. 'guild_id' : member.guild.id,
  47. 'display_name' : member.display_name,
  48. 'votes_left' : 4
  49. })
  50. dump_json(data)
  51.  
  52. def check_votes(member_id, members):
  53. votes = 0
  54. for m in members:
  55. if member_id == m.get("id"):
  56. if "votes_left" in m.keys():
  57. votes = m.get("votes_left")
  58. elif "votes" in m.keys():
  59. votes = m.get("votes")
  60. return votes
  61.  
  62. def add_vote_to_member(member_author, member_voted):
  63. data = open_json()
  64. found_voted = False
  65. found_author = False
  66. # check if vote_member exists
  67. for m in data['voted_members']:
  68. if m.get("id") == member_voted.id:
  69. found_voted = True
  70. if check_votes(member_author.id, data['members']) > 0:
  71. m["votes"] += 1
  72. print("User {0} has {1} votes this week".format(m.get("display_name"), m.get("votes")))
  73. m
  74. else:
  75. print("User {0} has insufficient votes".format(m.get("display_name")))
  76.  
  77. if not found_voted:
  78. write_member_to_json(member_voted, True)
  79. else:
  80. reset_json()
  81. dump_json(data)
  82.  
  83.  
  84. # check if member exists
  85. for m in data['members']:
  86. if m.get("id") == member_author:
  87. found_author = True
  88. m["votes_left"] -= 1
  89.  
  90. if not found_author:
  91. write_member_to_json(member_author, False)
  92. else:
  93. reset_json()
  94. dump_json(data)
  95.  
  96. bot = commands.Bot(command_prefix='!')
  97. @bot.event
  98. async def on_ready():
  99. print('Bot has successfully joined the server...')
  100. reset_json()
  101.  
  102. @bot.command()
  103. async def vote(ctx, arg):
  104. # check if user exists
  105. if len(ctx.message.mentions) == 1:
  106. member_voted = ctx.message.mentions[0]
  107. member_author = ctx.message.author
  108. print('{0} voted for {1}'.format(member_author, member_voted.display_name))
  109. add_vote_to_member(member_author, member_voted)
  110. else:
  111. return "You can vote only one person at a time."
  112.  
  113. bot.run(MY_TOKEN)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement