terisback / discord.v Goto Github PK
View Code? Open in Web Editor NEWDiscord Bot Framework written in V
License: MIT License
Discord Bot Framework written in V
License: MIT License
I'm running the example from the README, and I get this:
2022-09-03 01:40:28 [ERROR] #0 Gateway error: failed to read next message: net: op timed out; code: 9
2022-09-03 01:40:28 [WARN ] #0 Websocket listen: net: op timed out; code: 9
I can still do !ping
and the server reply correctly with pong!
Currently it can drop connection randomly (for me) and resume incorrectly, without really connecting to something. (Running ping-pong example)
[discord.v] #0 Gateway closed [code: 1000 (normal_closure), reason: Reconnect]
[INFO 2020-12-25 18:14:41] Quit client listener, server(false)...
[discord.v] #0 Gateway closed [code: 1000 (normal_closure), reason: closed by client]
[INFO 2020-12-25 18:14:41] connecting to host wss://gateway.discord.gg/?v=8&encoding=json
[INFO 2020-12-25 18:14:41] successfully connected to host wss://gateway.discord.gg/?v=8&encoding=json
[discord.v] #0 Successfully connected to gateway
[INFO 2020-12-25 18:14:41] Starting client listener, server(false)...
[discord.v] #0 Gateway closed [code: 1000 (normal_closure), reason: Reconnect]
[INFO 2020-12-25 19:03:30] Quit client listener, server(false)...
[discord.v] #0 Gateway closed [code: 1000 (normal_closure), reason: closed by client]
[INFO 2020-12-25 19:03:30] connecting to host wss://gateway.discord.gg/?v=8&encoding=json
[INFO 2020-12-25 19:03:31] successfully connected to host wss://gateway.discord.gg/?v=8&encoding=json
[discord.v] #0 Successfully connected to gateway
[INFO 2020-12-25 19:03:31] Starting client listener, server(false)...
Title above ^
(fixed the C compiler with entering an a long time to thread sleep and changing client.run().wait()
to client.run()
Need struct for message + file
I'm getting the following error after some minutes:
[discord.v] #0 Successfully connected to gateway
Ready!
V panic: realloc(0) failed
/tmp/v/codersbot.2699066824402020250.tmp.c:10768: at v_panic: Backtrace
/tmp/v/codersbot.2699066824402020250.tmp.c:10851: by v_realloc
/tmp/v/codersbot.2699066824402020250.tmp.c:10175: by array_ensure_cap
/tmp/v/codersbot.2699066824402020250.tmp.c:10444: by array_push
/tmp/v/codersbot.2699066824402020250.tmp.c:32516: by discordv__Member_from_json
/tmp/v/codersbot.2699066824402020250.tmp.c:33302: by discordv__from_json_T_discordv__Member
/tmp/v/codersbot.2699066824402020250.tmp.c:31990: by discordv__Message_from_json
/tmp/v/codersbot.2699066824402020250.tmp.c:31058: by discordv__on_dispatch
/tmp/v/codersbot.2699066824402020250.tmp.c:17541: by discordv__eventbus__EventBus_publish
/tmp/v/codersbot.2699066824402020250.tmp.c:30203: by discordv__gateway__Connection_publish
/tmp/v/codersbot.2699066824402020250.tmp.c:30234: by discordv__gateway__on_message
/tmp/v/codersbot.2699066824402020250.tmp.c:25574: by x__websocket__Client_send_message_event
/tmp/v/codersbot.2699066824402020250.tmp.c:26462: by x__websocket__Client_listen
/tmp/v/codersbot.2699066824402020250.tmp.c:30169: by discordv__gateway__Connection_open
/tmp/v/codersbot.2699066824402020250.tmp.c:6578: by discordv__gateway__Connection_open_thread_wrapper
7f1ac78f64a4 : by ???
Hello ๐
First of all, thank you for building this library (I started to make one myself then I saw this lib ๐)
I saw the comment in discord.v/util/log.v, "Remove then release". I think logs should be kept for debugging purposes, but it would be nice to be able to disable them (maybe using a DV_DEBUG environment variable or something like that?).
Thank you
import terisback.discordv as vd
fn main() {
mut client := vd.new(token: 'my_token') ?
client.on_message_create(on_ping)
client.run().wait()
}
fn on_ping(mut client vd.Client, evt &vd.MessageCreate) {
if evt.content == '!ping' {
client.channel_message_send(evt.channel_id, content: 'pong!') or { }
}
}```
At the moment, optional fields in structures are not implemented in vlang, but as far as I understand this is a matter of time. We can try to implement our own through generics:
struct None {}
type OptError = string | None
struct Opt<T> {
value T
error OptError = None{}
}
struct MessageModify {
text Opt<string>
}
editQuery := MessageModify{Opt<string>{value: 'Hello there!'})
// Then in rest method check every field error and serialize
Options will replace almost all fields in already written structures
or do nothing yet and wait for implementation in language
The problem occurred when I was trying the README Example.
v run main.v
C:\Users\myname\.vmodules\terisback\discordv\client.v:6:1: builder error: bad module definition:
C:\Users\myname\.vmodules\terisback\discordv\client.v imports module "eventbus" but
C:\Users\myname\.vmodules\terisback\discordv\eventbus\eventbus.v is defined as module `terisback.discordv.eventbus`
4 | import term
5 | import time
6 | import eventbus
| ~~~~~~~~~~~~~~~
7 | import gateway
8 | import rest
I figured it was probably a conflict with vlib.
So, I made the following changes to discord.v
clienv.v
// fix import path
import discordv.eventbus
But I got the following error
v run main.v
C:\Users\myname\.vmodules\terisback\discordv\eventbus\eventbus.v:8:8: error: cannot register struct `terisback.discordv.eventbus.Registry`, another type with this name exists
6 | // Registry of event handlers
7 | [heap]
8 | struct Registry {
| ~~~~~~~~
9 | mut:
10 | events []EventHandler
I'm currently investigating this, does anyone have a good solution?
Thank you.
i have an error:
PS C:\Users\Mewzax\Documents\Code\Vlang\Discord-Bot> v run .
C:/Users/Mewzax/.vmodules/terisback/discordv/rest/formdata/formdata.v:83:10: warning: method `strings.Builder.write_b` has been deprecated since 2022-02-11, it will be an error after 2022-08-10; Use write_u8() instead
81 | pub fn (f FormData) encode() string {
82 | mut builder := strings.new_builder(200)
83 | builder.write_b(`\n`)
| ~~~~~~~~~~~~~
84 | for k, v in f.fields {
85 | builder.write_string('--$f.boundary\n')
C:/Users/Mewzax/.vmodules/terisback/discordv/rest/formdata/formdata.v:89:13: warning: method `strings.Builder.write_b` has been deprecated since 2022-02-11, it will be an error after 2022-08-10; Use write_u8() instead
87 | string {
88 | builder.write_string("Content-Disposition: form-data; name=\"$k\"\n")
89 | builder.write_b(`\n`)
| ~~~~~~~~~~~~~
90 | builder.write_string(v)
91 | builder.write_b(`\n`)
C:/Users/Mewzax/.vmodules/terisback/discordv/rest/formdata/formdata.v:91:13: warning: method `strings.Builder.write_b` has been deprecated since 2022-02-11, it will be an error after 2022-08-10; Use write_u8() instead
89 | builder.write_b(`\n`)
90 | builder.write_string(v)
91 | builder.write_b(`\n`)
| ~~~~~~~~~~~~~
92 | }
93 | FormFile {
C:/Users/Mewzax/.vmodules/terisback/discordv/rest/formdata/formdata.v:91:13: warning: method `strings.Builder.write_b` has been deprecated since 2022-02-11, it will be an error after 2022-08-10; Use write_u8() instead
89 | builder.write_b(`\n`)
90 | builder.write_string(v)
91 | builder.write_b(`\n`)
| ~~~~~~~~~~~~~
92 | }
93 | FormFile {
C:/Users/Mewzax/.vmodules/terisback/discordv/rest/formdata/formdata.v:97:13: warning: method `strings.Builder.write_b` has been deprecated since 2022-02-11, it will be an error after 2022-08-10; Use write_u8() instead
95 | builder.write_string('Content-Type: $v.content_type\n')
96 | builder.write_string('Content-Transfer-Encoding: base64\n')
97 | builder.write_b(`\n`)
| ~~~~~~~~~~~~~
98 | builder.write_string(base64.encode(v.data))
99 | builder.write_b(`\n`)
C:/Users/Mewzax/.vmodules/terisback/discordv/rest/formdata/formdata.v:99:13: warning: method `strings.Builder.write_b` has been deprecated since 2022-02-11, it will be an error after 2022-08-10; Use write_u8() instead
97 | builder.write_b(`\n`)
98 | builder.write_string(base64.encode(v.data))
99 | builder.write_b(`\n`)
| ~~~~~~~~~~~~~
100 | }
101 | }
C:/Users/Mewzax/.vmodules/terisback/discordv/rest/formdata/formdata.v:99:13: warning: method `strings.Builder.write_b` has been deprecated since 2022-02-11, it will be an error after 2022-08-10; Use write_u8() instead
97 | builder.write_b(`\n`)
98 | builder.write_string(base64.encode(v.data))
99 | builder.write_b(`\n`)
| ~~~~~~~~~~~~~
100 | }
101 | }
C:/Users/Mewzax/.vmodules/terisback/discordv/rest.v:30:24: warning: function `math.mathutil.min` has been deprecated since 2022-01-19, it will be an error after 2022-07-18; use math.min instead
28 | values.add('before', query.before)
29 | }
30 | values.add('limit', m.min(m.max(1, query.limit), 100).str())
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
31 | return values.encode()
32 | }
C:/Users/Mewzax/.vmodules/terisback/discordv/rest.v:30:30: warning: function `math.mathutil.max` has been deprecated since 2022-01-19, it will be an error after 2022-07-18; use math.max instead
28 | values.add('before', query.before)
29 | }
30 | values.add('limit', m.min(m.max(1, query.limit), 100).str())
| ~~~~~~~~~~~~~~~~~~~
31 | return values.encode()
32 | }
C:/Users/Mewzax/.vmodules/terisback/discordv/rest.v:30:30: warning: function `math.mathutil.max` has been deprecated since 2022-01-19, it will be an error after 2022-07-18; use math.max instead
28 | values.add('before', query.before)
29 | }
30 | values.add('limit', m.min(m.max(1, query.limit), 100).str())
| ~~~~~~~~~~~~~~~~~~~
31 | return values.encode()
32 | }
C:/Users/Mewzax/.vmodules/terisback/discordv/rest/formdata/formdata.v:98:40: error: cannot use `[]byte` as `[]u8` in argument 1 to `encoding.base64.encode`
96 | builder.write_string('Content-Transfer-Encoding: base64\n')
97 | builder.write_b(`\n`)
98 | builder.write_string(base64.encode(v.data))
| ~~~~~~
99 | builder.write_b(`\n`)
100 | }
C:/Users/Mewzax/.vmodules/terisback/discordv/structs.v:692:24: error: type `byte` is an alias, use the original alias type `u8` instead
690 | }
691 |
692 | pub type MessageFlag = byte
| ~~~~
693 |
694 | pub const (
C:/Users/Mewzax/.vmodules/terisback/discordv/structs.v:785:27: error: cannot cast `int` to `byte` (alias to `u8`)
783 | }
784 | 'flags' {
785 | m.flags = MessageFlag(byte(v.int()))
| ~~~~~~~~~~~~~
786 | }
787 | else {}
can you help me pls ?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.