-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathbot.py
More file actions
156 lines (137 loc) · 8.34 KB
/
bot.py
File metadata and controls
156 lines (137 loc) · 8.34 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
import discord
import responses
import os
import random
import requests
import datetime
from dotenv import load_dotenv
import button_paginator as pg
async def send_message(message, user_message, is_private):
try:
response = responses.handle_response(user_message)
if not response == "":
await message.author.send(response) if is_private else await message.channel.send(response)
except Exception as e:
print(e)
def run_discord_bot():
load_dotenv()
TOKEN = os.getenv('DISCORD_TOKEN')
intents = discord.Intents.default()
intents.message_content = True
client = discord.Client(intents=intents)
@client.event
async def on_ready():
print(f'{client.user} is now running!')
@client.event
async def page(embeds, ctx):
paginator = pg.Paginator(client, embeds, ctx)
paginator.add_button('prev', emoji='◀')
paginator.add_button('delete', label='Close', emoji='⏹')
paginator.add_button('next', emoji='▶')
await paginator.start()
@client.event
async def on_message(message):
if message.author == client.user:
return
username = str(message.author)
user_message = str(message.content)
channel = str(message.channel)
print(f"{username} je reku: '{user_message}' ({channel})")
if user_message == '/help':
embedded = discord.Embed(title='Help menu', color=0xff00ff, timestamp=datetime.datetime.now(datetime.UTC))
embedded.add_field(name='/vegova', inline=False, value='vrne random vegova quote')
embedded.add_field(name='/fri', inline=False, value='vrne random fri quote')
embedded.add_field(name='/sexy', inline=False, value='vrne random sexy fotko')
embedded.add_field(name='/tomo', inline=False, value='vrne random tomo slikco')
embedded.add_field(name='/zlebnik', inline=False, value='vrne random zlebnik slikco')
embedded.add_field(name='/stats [ticker/name]', inline=False, value='če vpišeš ticker oz. ime kriptovalute, vrne podatke o njej (rank, supply, max supply, mcap, price,... Kriptovalute pod 40mil mcap zelo težko najde. ')
embedded.add_field(name='/markets [ticker/name]', inline=False, value='Vrne vse tiste exchange-e, kjer se ta kriptovaluta pojavlja in pod katerim inštrumentom. ')
embedded.add_field(name='/assets', inline=False, value='Vrne cel katalog kriptovalut, s katerim preko gumbov se pomikaš najprej/nazaj. ')
embedded.add_field(name='In par easter egg-ov če rečeš točno določeno besedo', inline=False, value='')
embedded.set_footer(text=f'Replying to {message.author}', icon_url=message.author.avatar.url)
await message.channel.send(embed=embedded)
if user_message == '/assets':
url = "https://api.coincap.io/v2/assets"
data = requests.get(url).json()
assets = []
for asset in data['data']:
embeded = discord.Embed(title='Cryptocurrencies', color=0x0000ff, timestamp=datetime.datetime.now(datetime.UTC))
for x in asset:
if x in ['supply', 'maxSupply', 'marketCapUsd']:
embeded.add_field(name=x, inline=True, value=round(float(asset[x]))) if x == 'maxSupply' and asset[x] is not None else embeded.add_field(name=x, inline=True, value='Not defined')
elif x in ['priceUsd', 'vwap24Hr', 'volumeUsd24Hr']:
embeded.add_field(name=x, inline=True, value=round(float(asset[x]), 5))
elif x in ['changePercent24Hr']:
embeded.add_field(name=x, inline=True, value=str(round(float(asset[x]), 2)) + ' 🔻') if float(asset[x]) < 0 else embeded.add_field(name=x, inline=True, value=str(round(float(asset[x]), 2)) + ' 🟩')
else:
embeded.add_field(name=x, inline=True, value=asset[x])
embeded.set_footer(text=f'Replying to {message.author}', icon_url=message.author.avatar.url)
assets.append(embeded)
await page(assets, message.channel)
if user_message[0:6] == '/stats':
ticker = user_message[7:]
url = 'https://api.coincap.io/v2/assets?search=' + ticker
data = requests.get(url).json()
embeded = discord.Embed(title='' + ticker + ' stats', color=0x0000ff, timestamp=datetime.datetime.now(datetime.UTC))
for x in data['data'][0]:
if x in ['supply', 'maxSupply', 'marketCapUsd']:
embeded.add_field(name=x, inline=True, value=round(float(data['data'][0][x])))
elif x in ['priceUsd', 'vwap24Hr', 'volumeUsd24Hr']:
embeded.add_field(name=x, inline=True, value=round(float(data['data'][0][x]), 5))
elif x in ['changePercent24Hr']:
embeded.add_field(name=x, inline=True, value=str(round(float(data['data'][0][x]), 2)) + ' 🔻') if float(data['data'][0][x]) < 0 else embeded.add_field(name=x, inline=True, value=str(round(float(data['data'][0][x]), 2)) + ' 🟩')
else:
embeded.add_field(name=x, inline=True, value=data['data'][0][x])
embeded.set_footer(text=f'Replying to {message.author}', icon_url=message.author.avatar.url)
await message.channel.send(embed=embeded)
if user_message[0:8] == '/markets':
tmp_ticker = user_message[9:]
tmp_url = 'https://api.coincap.io/v2/assets?search=' + tmp_ticker
tmp_data = requests.get(tmp_url).json()
ticker = tmp_data['data'][0]['id']
url = 'https://api.coincap.io/v2/assets/' + ticker + '/markets'
data = requests.get(url).json()
markets = []
markets_per_page = 6
pages = [data['data'][i:i + markets_per_page] for i in range(0, len(data['data']), markets_per_page)]
for p in pages:
embeded = discord.Embed(title='Markets for ' + ticker, color=0x0000ff, timestamp=datetime.datetime.now(datetime.UTC))
for market in p:
embeded.add_field(name=market['exchangeId'], inline=False, value=f"{market['baseSymbol']}/{market['quoteSymbol']}, {round(float(market['priceUsd']), 5)}$, {round(float(market['volumePercent']), 2)}%")
embeded.set_footer(text=f'Replying to {message.author}', icon_url=message.author.avatar.url)
markets.append(embeded)
await page(markets, message.channel)
if user_message == '/sexy':
random_file=random.choice(os.listdir("./src/sexy"))
path = './src/sexy/' + random_file
await message.channel.send(file=discord.File(path))
elif user_message == '?/sexy':
random_file=random.choice(os.listdir("./src/sexy"))
path = './src/sexy/' + random_file
await message.author.send(file=discord.File(path))
if user_message == '/zlebnik':
random_file=random.choice(os.listdir("./src/zlebnik"))
path = './src/zlebnik/' + random_file
await message.channel.send(file=discord.File(path))
elif user_message == '?/zlebnik':
random_file=random.choice(os.listdir("./src/zlebnik"))
path = './src/zlebnik/' + random_file
await message.author.send(file=discord.File(path))
if user_message == '/tomo':
random_file=random.choice(os.listdir("./src/tomo"))
path = './src/tomo/' + random_file
await message.channel.send(file=discord.File(path))
elif user_message == '?/tomo':
random_file=random.choice(os.listdir("./src/tomo"))
path = './src/tomo/' + random_file
await message.author.send(file=discord.File(path))
if user_message in ['gorila', 'mog', 'Gorila', 'Mog']:
await message.channel.send(file=discord.File("./src/gorila/gorila.gif"))
elif user_message in ['?gorila', '?mog', '?Gorila', '?Mog']:
await message.author.send(file=discord.File("./src/gorila/gorila.gif"))
if user_message[0] == '?':
user_message = user_message[1:]
await send_message(message, user_message, is_private=True)
else:
await send_message(message, user_message, is_private=False)
client.run(TOKEN)