Advertisement
Guest User

Untitled

a guest
Jan 19th, 2018
132
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.43 KB | None | 0 0
  1. import random
  2. import string
  3. import re
  4. import discord
  5. import mysql.connector
  6. from mysql.connector import errorcode
  7.  
  8. client = discord.Client()
  9.  
  10. try:
  11. cnx = mysql.connector.connect(user='', password='',
  12. host='',
  13. database='')
  14. except mysql.connector.Error as err:
  15. if err.errno == errorcode.ER_ACCESS_DENIED_ERROR:
  16. print("Something is wrong with your user name or password")
  17. elif err.errno == errorcode.ER_BAD_DB_ERROR:
  18. print("Database does not exist")
  19. else:
  20. print(err)
  21.  
  22.  
  23. @client.event
  24. async def on_ready():
  25. print('Logged in as')
  26. print(client.user.name)
  27. print(client.user.id)
  28. print('Online with ' + str(len(client.servers)) + ' servers.')
  29. await client.change_presence(game=discord.Game(name='DM me .generate'))
  30. print('------')
  31.  
  32.  
  33. # @client.event
  34. # async def direct_message_task():
  35. def add_user(userid, token):
  36. curA = cnx.cursor()
  37. query = ("INSERT INTO users "
  38. "(discord_id, token)"
  39. "VALUES (%s, %s)")
  40. curA.execute(query, (userid, token))
  41. cnx.commit()
  42.  
  43.  
  44. def add_server(server):
  45. serverID = server.id
  46. serverName = server.name
  47. owner = server.owner.id
  48. members = server.member_count
  49. curA = cnx.cursor()
  50. query = ("INSERT INTO servers "
  51. "(discord_id, members, server_name, owner_discord_id)"
  52. "VALUES (%s, %s, %s, %s)")
  53. curA.execute(query, (serverID, members, serverName, owner))
  54. cnx.commit()
  55.  
  56.  
  57. # def get_user_voted(userid, server):
  58. # curA = cnx.cursor(buffered=True)
  59. # query = "SELECT %s_voted FROM users WHERE discord_id = %s"
  60. # curA.execute(query, (int(server.id), userid))
  61. # result = curA.fetchall()
  62. # for r in result:
  63. # return r[0]
  64.  
  65.  
  66. def get_user_votes(userid, server):
  67. curA = cnx.cursor(buffered=True)
  68. query = "SELECT votes FROM votes WHERE server_id = %s AND user_id = %s"
  69. curA.execute(query, (int(server.id), userid))
  70. result = curA.fetchall()
  71. for r in result:
  72. return r[0]
  73.  
  74.  
  75. def generate_token():
  76. return ''.join(random.SystemRandom().choice(string.ascii_uppercase + string.digits) for _ in range(12))
  77.  
  78.  
  79. def get_token(userid):
  80. curA = cnx.cursor(buffered=True)
  81. query = "SELECT token FROM users WHERE discord_id = %s"
  82. curA.execute(query, (userid,))
  83. result = curA.fetchall()
  84. for r in result:
  85. return r[0]
  86.  
  87.  
  88. def server_exists(serverid):
  89. curA = cnx.cursor(buffered=True)
  90. query = "SELECT * FROM servers WHERE discord_id = %s"
  91. curA.execute(query, (serverid,))
  92. result = curA.fetchall()
  93. cnx.commit()
  94. return len(result) > 0
  95.  
  96.  
  97. def user_exists(userid):
  98. curA = cnx.cursor(buffered=True)
  99. query = "SELECT * FROM users WHERE discord_id = %s"
  100. curA.execute(query, (userid,))
  101. result = curA.fetchall()
  102. cnx.commit()
  103. return len(result) > 0
  104.  
  105.  
  106. def set_invite(invType, server, invite):
  107. curA = cnx.cursor()
  108. # type = true - discord
  109. # type = false - telegram
  110. if invType:
  111. query = "UPDATE `cryptodb`.`servers` SET `discord_link`=%s WHERE `discord_id`=%s"
  112. else:
  113. query = "UPDATE `cryptodb`.`servers` SET `telegram_link`=%s WHERE `discord_id`=%s"
  114. curA.execute(query, (invite, int(server.id)))
  115. cnx.commit()
  116.  
  117.  
  118. def set_visible(boole, server):
  119. curA = cnx.cursor()
  120. query = "UPDATE `cryptodb`.`servers` SET `visibility`=%s WHERE `discord_id`=%s"
  121. curA.execute(query, (int(boole), int(server.id)))
  122. cnx.commit()
  123.  
  124.  
  125. @client.event
  126. async def on_server_remove(server):
  127. set_visible(False, server)
  128.  
  129.  
  130. @client.event
  131. async def on_server_join(server):
  132. # Sends server info to SQL
  133. if not server_exists(server.id):
  134. add_server(server)
  135. set_visible(True, server)
  136.  
  137. # Creates a #votes channel, sends an informational message, and pins it.
  138. votesChannel = await client.create_channel(server, 'votes')
  139. votesEmbed = discord.Embed(
  140. description='Use .votes to view your votes for this server. Only usable in the #votes channel.', color=0xf7c9c9)
  141. votesMsg = await client.send_message(votesChannel, embed=votesEmbed)
  142. await client.pin_message(votesMsg)
  143.  
  144. # Creates a #input channel, sends an informational message, and pins it.
  145. everyone_perms = discord.PermissionOverwrite(read_messages=False)
  146. everyone = discord.ChannelPermissions(target=server.default_role, overwrite=everyone_perms)
  147.  
  148. inputChannel = await client.create_channel(server, 'input', everyone)
  149. inputEmbed = discord.Embed(
  150. description='Use .telegram (**URL**) to update your telegram link.\nUse .discord (**URL**) to update your discord invite link.\nThese commands are only usable by **Administrators** in the #input channel.',
  151. color=0xf7c9c9)
  152. inputMsg = await client.send_message(inputChannel, embed=inputEmbed)
  153. await client.pin_message(inputMsg)
  154.  
  155.  
  156. @client.event
  157. async def on_message(message):
  158. auth = message.author.id
  159.  
  160. # #input channel handler
  161. if message.channel.name == 'input':
  162. if message.content.startswith('.telegram'):
  163. try:
  164. invite = re.search("(?P<url>https?://[^\s]+)", message.content).group("url")
  165. if len(invite) > 0 and 't.me/' in invite:
  166. set_invite(False, message.server, invite)
  167. await client.send_message(message.channel, 'Telegram link changed to `' + invite + '`')
  168. else:
  169. await client.send_message(message.channel,
  170. 'No valid link. Make sure you\'re using `https://t.me/INVITE` format.')
  171. except AttributeError:
  172. await client.send_message(message.channel,
  173. 'No valid link. Make sure you\'re using `https://t.me/INVITE` format.')
  174. elif message.content.startswith('.discord'):
  175. try:
  176. invite = re.search("(?P<url>https?://[^\s]+)", message.content).group("url")
  177. if len(invite) > 0 and 'discord.gg/' in invite:
  178. set_invite(True, message.server, invite)
  179. await client.send_message(message.channel, 'Discord link changed to `' + invite + '`')
  180. else:
  181. await client.send_message(message.channel,
  182. 'No valid link. Make sure you\'re using `https://discord.gg/INVITE` '
  183. 'format.')
  184. except AttributeError:
  185. await client.send_message(message.channel,
  186. 'No valid link. Make sure you\'re using `https://discord.gg/INVITE` format.')
  187.  
  188. # .generate handler
  189. elif message.server is None and message.content.startswith('.generate'):
  190. token = generate_token()
  191. if user_exists(auth): # check to see if their id is already registered
  192. await client.send_message(message.channel, 'Token already exists: ' + get_token(auth))
  193. else:
  194. add_user(auth, token)
  195. await client.send_message(message.channel, 'Use this token to register on http://crypto-pumps.com. Do '
  196. 'not share it with anyone. It is used to recover your account and register. \n\n' + token)
  197.  
  198. # .token handler
  199. elif message.server is None and message.content.startswith('.token'):
  200. token = get_token(auth)
  201. await client.send_message(message.channel, 'Use this token to register on http://crypto-pumps.com. Do '
  202. 'not share it with anyone. It is used to recover your account and register. \n\n' + token)
  203.  
  204. # .votes handler
  205. elif message.channel.name == 'votes' and message.content.startswith('.votes'):
  206. if user_exists(auth):
  207. mention = message.author.mention
  208. embed = discord.Embed(description='**Stats for ' + mention + '**', color=0xf7c9c9)
  209. embed.add_field(name="Server: " + message.server.name,
  210. value="Votes :thumbsup🇬🇮 " + str(get_user_votes(auth, message.server)))
  211. await client.send_message(message.channel, embed=embed)
  212. else:
  213. await client.send_message(message.channel, 'Cannot find any information about that user.')
  214.  
  215.  
  216. client.run('NDAyMTU5MTEyMTQ3OTU5ODA4.DT2QGw._LZ2vtf7Obw6p8EbVDYElXdzsS0')
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement